Android控件之使用ListView实现时间轴效果
程序员文章站
2024-02-28 20:48:28
实现思路:
该view是通过listview实现的,通过实体两个字段内容content和时间time来展示每个listitem
时间轴是使用上面一条线(20...
实现思路:
该view是通过listview实现的,通过实体两个字段内容content和时间time来展示每个listitem
时间轴是使用上面一条线(20dp)和中间一个圆(15dp)和下面一条线(40dp)组装成的
在listview中,设置其分割线为空,并且没有点击效果
效果图:
步骤一:使用xml画出一个灰色的圆点(time_cycle.xml)
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#cbcbcb" /> <size android:width="15dp" android:height="15dp" /> </shape>
步骤二:javabean的编写
public class kuaidi { private string content; private string time; public kuaidi(string time, string content) { this.content = content; this.time = time; } public string getcontent() { return content; } public void setcontent(string content) { this.content = content; } public string gettime() { return time; } public void settime(string time) { this.time = time; } }
步骤三:编写子布局(time_item.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="75dp" android:orientation="horizontal"> <!--线条部分--> <linearlayout android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" android:paddingleft="30dp"> <view android:layout_width="3dp" android:layout_height="20dp" android:background="#cbcbcb" /> <imageview android:layout_width="15dp" android:layout_height="15dp" android:background="@drawable/time_cycle" /> <view android:layout_width="3dp" android:layout_height="40dp" android:background="#cbcbcb" /> </linearlayout> <!--文字部分--> <linearlayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingleft="30dp" android:paddingright="30dp" android:paddingtop="20dp"> <textview android:id="@+id/tv_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="【广东省中国邮政集团公司深圳市龙华函件中心】已收寄" android:textcolor="#ababab" /> <textview android:id="@+id/tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tv_content" android:text="2016-05-03 00:22:36" android:textcolor="#ababab" /> </linearlayout> </linearlayout>
其效果如图:
步骤四:编写父布局(activity_main.xml)
<?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"> <listview android:id="@+id/lv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="@null" android:listselector="@android:color/transparent" /> </relativelayout>
步骤五:编写子布局的适配器(kuaidiadapter.java)
public class kuaidiadapter extends baseadapter { //印章数据 private list<kuaidi> list; private layoutinflater minflater; public kuaidiadapter(context context, list<kuaidi> list) { this.list = list; minflater = layoutinflater.from(context); } @override public int getcount() { return list.size(); } @override public object getitem(int position) { return list.get(position); } @override public long getitemid(int position) { return position; } @override public view getview(int position, view convertview, viewgroup parent) { if (convertview == null) { convertview = minflater.inflate(r.layout.time_item, null); } viewholder holder = getviewholder(convertview); kuaidi kd = list.get(position); holder.tv_content.settext(kd.getcontent()); holder.tv_time.settext(kd.gettime()); return convertview; } /** * 获得控件管理对象 * * @param view * @return */ private viewholder getviewholder(view view) { viewholder holder = (viewholder) view.gettag(); if (holder == null) { holder = new viewholder(view); view.settag(holder); } return holder; } /** * 控件管理类 */ private class viewholder { private textview tv_content, tv_time; viewholder(view view) { tv_content = (textview) view.findviewbyid(r.id.tv_content); tv_time = (textview) view.findviewbyid(r.id.tv_time); } } }
步骤六:在父布局中设置适配器
public class mainactivity extends appcompatactivity { private listview lv; private kuaidiadapter adapter; private list<kuaidi> list; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); lv = (listview) findviewbyid(r.id.lv); list =new arraylist<>(); list.add(new kuaidi("2016-09-18 08:33:50","您的订单开始处理")); list.add(new kuaidi("2016-09-18 08:40:23","您的订单待配货")); list.add(new kuaidi("2016-09-18 08:51:33","您的包裹已出库")); list.add(new kuaidi("2016-09-18 21:12:53","【深圳市龙华函件中心】已收寄")); list.add(new kuaidi("2016-09-18 17:44:20","到达【深圳】")); list.add(new kuaidi("2016-09-18 21:26:51","离开【深圳市龙华函件中心】,下一站【深圳市】")); list.add(new kuaidi("2016-09-18 23:18:21","到达【深圳市处理中心】")); list.add(new kuaidi("2016-09-19 01:14:30","离开【深圳市处理中心】,下一站【广州市】")); list.add(new kuaidi("2016-09-19 04:42:11","到达【广东省广州邮件处理中心】")); adapter = new kuaidiadapter(this,list); lv.setadapter(adapter); } }
以上所述是小编给大家介绍的android控件之使用listview实现时间轴效果,希望对大家有所帮助
上一篇: java中堆和栈的区别分析
下一篇: 分享MySQL的自动化安装部署的方法
推荐阅读
-
Android控件之使用ListView实现时间轴效果
-
Android-自定义控件之ListView下拉刷新的实现
-
android 中win10 使用uwp控件实现进度条Marquez效果
-
Android-自定义控件之ListView下拉刷新的实现
-
Android 使用自定义RecyclerView控件实现Gallery效果
-
Android开发之瀑布流控件的实现与使用方法示例
-
android表格效果之ListView隔行变色实现代码
-
Android 使用自定义RecyclerView控件实现Gallery效果
-
Android开发之瀑布流控件的实现与使用方法示例
-
Android开发之使用150行代码实现滑动返回效果