Android实现快递物流时间轴效果

本文实例为大家分享了Android实现快递物流时间轴效果展示的具体代码,供大家参考,具体内容如下

首先,这篇参考了别人的代码。根据自己的项目需求简单改造了一下,效果图如下

xml:代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" > 

 <ListView
  android:id="@+id/lv_list"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:cacheColorHint="@null"
  android:divider="@null" >
 </ListView> 

</LinearLayout> 

接下来是Activity,准备数据就好了

public class TimeLineTextActivity extends Activity{ 

 private ListView listView;
 private TimeLineAdapter adapter; 

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main); 

  listView=(ListView) findViewById(R.id.lv_list);
  listView.setDividerHeight(0);
  adapter = new TimeLineAdapter(this, initData());
  listView.setAdapter(adapter); 

 } 

 private List<Map<String, Object>> initData() {
  List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); 

  Map<String, Object> map = new HashMap<String, Object>();
  map.put("title", "提交已完成......");
  map.put("time", "2015-10-22 14:00:00");
  list.add(map); 

  map = new HashMap<String, Object>();
  map.put("title", "正在审核中......");
  map.put("time", "2015-10-22 15:00:00");
  list.add(map); 

  map = new HashMap<String, Object>();
  map.put("title", "客服将会给您打电话......");
  map.put("time", "2015-10-22 16:00:00");
  list.add(map); 

  map = new HashMap<String, Object>();
  map.put("title", "订单已完成");
  map.put("time", "2015-10-22 17:00:00");
  list.add(map); 

  return list; 

 } 

} 

Adapter:

public class TimeLineAdapter extends BaseAdapter {
 private Context context;
 private List<Map<String,Object>> list;
  private LayoutInflater inflater; 

  public TimeLineAdapter(Context context, List<Map<String, Object>> list) {
   super();
   this.context = context;
   this.list = list;
  } 

 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  return list.size();
 } 

 @Override
 public Object getItem(int position) {
  // TODO Auto-generated method stub
  return position;
 } 

 @Override
 public long getItemId(int position) {
  // TODO Auto-generated method stub
  return position;
 } 

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  // TODO Auto-generated method stub
  TimeLineHolder viewHolder = null;
  if (convertView == null) {
   inflater = LayoutInflater.from(parent.getContext());
   convertView = inflater.inflate(R.layout.itemtimeline2, null);
   viewHolder = new TimeLineHolder(); 

   viewHolder.title = (TextView) convertView.findViewById(R.id.title);
   viewHolder.time = (TextView) convertView.findViewById(R.id.time);
   convertView.setTag(viewHolder);
  } else {
   viewHolder = (TimeLineHolder) convertView.getTag();
  } 

  String titleStr = list.get(position).get("title").toString(); 

  viewHolder.title.setText(titleStr); 

  return convertView; 

 } 

 static class TimeLineHolder{
  private TextView title,time;
 }
} 

每一个item的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" > 

  <View
  android:id="@+id/view_0"
  android:layout_width="1dp"
  android:layout_height="25dp"
  android:layout_below="@+id/layout_1"
  android:layout_marginLeft="40dp"
  android:background="#A6A6A6" />
 <ImageView
  android:id="@+id/image"
  android:layout_width="15dp"
  android:layout_height="15dp"
  android:layout_below="@+id/view_0"
  android:layout_marginLeft="33dp"
  android:src="@drawable/timeline_green" />
 <View
  android:id="@+id/view_2"
  android:layout_width="1dp"
  android:layout_height="50dp"
  android:layout_below="@+id/image"
  android:layout_marginLeft="40dp"
  android:background="#A6A6A6" /> 

 <View
  android:id="@+id/view_4"
  android:layout_width="match_parent"
  android:layout_height="1dp"
  android:layout_alignBottom="@+id/view_2"
  android:layout_marginLeft="55dp"
  android:layout_marginRight="15dp"
  android:background="#A6A6A6" /> 

  <RelativeLayout
  android:id="@+id/relative"
  android:layout_width="fill_parent"
  android:layout_height="match_parent"
  android:layout_margin="10dp"
  android:layout_toRightOf="@+id/view_0"
  android:layout_alignBottom="@+id/view_4"
  android:padding="5dp"
  android:orientation="vertical" > 

  <TextView
   android:id="@+id/title"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:ellipsize="end"
   android:layout_marginTop="8dp"
   android:maxEms="7"
   android:paddingLeft="5dp"
   android:singleLine="true"
   android:text="需求提交成功"
   android:textSize="16sp" />
  <TextView
   android:id="@+id/time"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:ellipsize="end"
   android:layout_below="@+id/title"
   android:layout_marginTop="15dp"
   android:maxEms="7"
   android:paddingLeft="5dp"
   android:singleLine="true"
   android:text="2015-9-28"
   android:textSize="14sp" /> 

 </RelativeLayout> 

</RelativeLayout>

其实这个东西看起来复杂,实际上挺简单的,就是一个ListView,希望对大家有帮助!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android自定义view仿淘宝快递物流信息时间轴

    学了Android有一段时间了,一直没有时间写博客,趁着周末有点空,就把自己做的一些东西写下来. 一方面锻炼一下自己的写文档的能力,另一方面分享代码的同时也希望能与大家交流一下技术,共同学习,共同进步. 废话不多少说,我们先来看看我们自定义view要实现的效果: 效果图 自定义属性 <resources> <declare-styleable name="TimeLineView"> <attr name="timelineRadius"

  • Android实现仿美团、顺丰快递数据加载效果

    我们都知道在Android中,常见的动画模式有两种:一种是帧动画(Frame Animation),一种是补间动画(Tween Animation).帧动画是提供了一种逐帧播放图片的动画方式,播放事先做好的图像,与gif图片原理类似,就像是在放电影一样.补间动画可以实现View组件的移动.放大.缩小以及渐变等效果. 今天我们主要来模仿一下美团中加载数据时小人奔跑动画的对话框效果,取个有趣的名字就是Running Man,奔跑吧,兄弟!话不多少,先上效果图,让各位大侠看看是不是你想要实现的效果,然

  • Android实现快递单号查询快递状态信息

    今天介绍一个自己做的快递单号查询的简单APP,供大家参考.由于需要使用http和json,本文在build.gradle(module:app)添加了okhttp3依赖和gson依赖. dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group:

  • Android实现快递物流跟踪布局效果

    先看效果 首页Activity public class TraceActivity extends AppCompatActivity { private ListView lvTrace; private List<Trace> traceList = new ArrayList<>(10); private TraceListAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState

  • android实现快递跟踪进度条

    本文实例为大家分享了android快递跟踪进度条展示的具体代码,供大家参考,具体内容如下 activity.class import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; publ

  • Android快递物流信息布局开发

    本文实例为大家分享了Android快递物流信息布局展示的具体代码,供大家参考,具体内容如下 1. 思路介绍 效果图: 思路: 就一个ListView,每个item就是一条物流信息.然后每个item,分为左和右两边,左边是一个进度条的风格,右边是物流文字,适配器里面判断item,position为0 就设置为绿色,其他position就设置为灰色就行了. 2. 代码 item的布局 <?xml version="1.0" encoding="utf-8"?>

  • Android实现快递物流时间轴效果

    本文实例为大家分享了Android实现快递物流时间轴效果展示的具体代码,供大家参考,具体内容如下 首先,这篇参考了别人的代码.根据自己的项目需求简单改造了一下,效果图如下 xml:代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:lay

  • vue实现物流时间轴效果

    本文实例为大家分享了vue实现物流时间轴效果的具体代码,供大家参考,具体内容如下 son组件(物流时间轴组件) <template> <div class="steps-wrap"> <ul> <li v-for="(item,index) in steps" :key="index"> <span class="time">{{item.time}}</spa

  • Android控件之使用ListView实现时间轴效果

     实现思路: 该View是通过ListView实现的,通过实体两个字段内容content和时间time来展示每个ListItem 时间轴是使用上面一条线(20dp)和中间一个圆(15dp)和下面一条线(40dp)组装成的 在ListView中,设置其分割线为空,并且没有点击效果 效果图: 步骤一:使用xml画出一个灰色的圆点(time_cycle.xml) <?xml version="1.0" encoding="utf-8"?> <shape

  • Android自定义指示器时间轴效果实例代码详解

    指示器时间轴在外卖.购物类的APP里会经常用到,效果大概就像下面这样,看了网上很多文章,大都是自己绘制,太麻烦,其实通过ListView就可以实现. 在Activity关联的布局文件activity_main.xml中放置一个ListView,代码如下.由于这个列表只是用于展示信息,并不需要用户去点击,所以将其clickable属性置为false:为了消除ListView点击产生的波纹效果,我们设置其listSelector属性的值为透明:我们不需要列表项之间的分割线,所以设置其divider属

  • Android使用自定义View实现横行时间轴效果

    前言 本篇文章会说下如何使用并且要用麻烦的自定义 view 去实现时间轴效果,以及如何分析.实现自定义 view. 需要具备的知识:Paint.Canvas.自定义 view 的绘制流程. 欢迎留言交流. 一.已经有很多 RecycleView 实现时间轴的例子,为何还要费劲的使用自定义 view 去实现时间轴? 首先看下最终想要的效果: 根据上图可以总结出以下几点: 每个阶段要显示时间.阶段名.状态图标.中间有虚线: 文字上下交错显示: 相邻阶段的文字在垂直方向上是可以相交的: 时间轴的个数不

  • android自定义控件实现简易时间轴(1)

    本文实例为大家分享了android自定义控件实现简易时间轴的具体代码,供大家参考,具体内容如下 之前项目需要写一个消费记录,类似于时间轴似的控件,自身在自定义控件这里不咋地(…),最后搞了一个这个demo 效果图: 这里就是绘制圆和上下两条线 1.资源文件,定义一些基本的属性: <?xml version="1.0" encoding="utf-8"?> <resources>     <attr name="textSize

  • Flutter通过Container实现时间轴效果

    时间轴是前端UI经常用到的效果,先看下效果图: 时间轴的特点 1.在列表中的高度不确定,高度取决于右侧 item 的高度 2.时间轴通常在第一个 item 中的样式和其他 item 中不同. 实现 一.借助 Container 中 decoration 属性,设置左侧的 border,可以实现时间轴高度随着 item 变化效果 Center( child: Container( width: 100, height: 100, decoration: BoxDecoration( // 设置 B

  • vue+swiper实现时间轴效果

    本文实例为大家分享了vue+swiper实现时间轴效果的具体代码,供大家参考,具体内容如下 效果: 首先引入,有淘宝镜像的用 cnpm install swiper --save 没有的用 npm install swiper --save <template> <div class="hello" style="height:100%;width:100%;position:relative;"> <div class="s

  • Vue实现时间轴效果

    本文实例为大家分享了Vue实现时间轴效果的具体代码,供大家参考,具体内容如下 时间轴上的时间点数和描述文本均可自定义设置 效果图如下: ①创建时间轴组件Timeline.vue: <template>   <div class="m-timeline-area">     <div class="m-timeline">       <div         :class="['m-timeline-item',

随机推荐