android 简易时间轴(实质是ListView)

ListView的应用

1.在很多时候是要用到时间轴的,有些处理的时间轴比较复杂,这里就给出一个比较简单的时间轴,其实就是ListView里面的Item的设计。

直接上代码:

ListView,item的xml文件-->time_item.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:background="#ffffff" >
 6
 7     <View
 8         android:id="@+id/top_line"
 9         android:layout_width="2dp"
10         android:layout_height="35dp"
11         android:layout_marginLeft="50dp"
12         android:background="@color/gray" />
13
14     <ImageView
15         android:id="@+id/img_icon"
16         android:layout_width="wrap_content"
17         android:layout_height="wrap_content"
18         android:layout_alignParentLeft="true"
19         android:layout_below="@+id/top_line"
20         android:layout_marginLeft="40dp"
21         android:src="@drawable/timeline_green" />
22
23     <TextView
24         android:id="@+id/tv_time"
25         android:layout_width="wrap_content"
26         android:layout_height="wrap_content"
27         android:layout_below="@id/top_line"
28         android:layout_marginLeft="10dp"
29         android:text="时间" />
30
31     <View
32         android:id="@+id/bottom_line"
33         android:layout_width="2dp"
34         android:layout_height="50dp"
35         android:layout_below="@id/img_icon"
36         android:layout_marginLeft="50dp"
37         android:background="@color/gray" />
38
39     <LinearLayout
40         android:layout_width="match_parent"
41         android:layout_height="match_parent"
42         android:layout_below="@id/top_line"
43         android:layout_marginLeft="65dp"
44         android:background="@drawable/timeline_content"
45         android:orientation="horizontal" >
46
47         <ImageView
48             android:layout_width="wrap_content"
49             android:layout_height="wrap_content"
50             android:src="@drawable/ic_launcher" />
51
52         <TextView
53             android:id="@+id/tv_content"
54             android:layout_width="wrap_content"
55             android:layout_height="wrap_content"
56             android:layout_gravity="center_vertical"
57             android:text="所包含的内容" />
58     </LinearLayout>
59
60 </RelativeLayout>

ListView的适配器:

  TimeAxisAdapter

  

 1 public class TimeAxisAdapter extends BaseAdapter {
 2
 3     private List<HashMap<String, Object>> list;
 4
 5     private Context context;
 6
 7     private static class ViewHolder {
 8         private TextView tvContent;
 9     }
10
11     public TimeAxisAdapter(Context context, List<HashMap<String, Object>> list) {
12         this.context = context;
13         this.list = list;
14     }
15
16     @Override
17     public int getCount() {
18         return list.size();
19     }
20
21     @Override
22     public Object getItem(int position) {
23         return list.get(position);
24     }
25
26     @Override
27     public long getItemId(int position) {
28         return position;
29     }
30
31     @Override
32     public View getView(int position, View convertView, ViewGroup parent) {
33
34         ViewHolder viewHolder = null;
35
36         if (convertView == null) {
37             viewHolder = new ViewHolder();
38             convertView = LayoutInflater.from(context).inflate(
39                     R.layout.time_item, null);
40             viewHolder.tvContent = (TextView) convertView
41                     .findViewById(R.id.tv_content);
42
43             viewHolder.tvContent.setText(list.get(position).get("content")
44                     .toString());
45             convertView.setTag(viewHolder);
46         } else {
47             viewHolder = (ViewHolder) convertView.getTag();
48
49         }
50         return convertView;
51     }
52 }

MainActivity.java

 1 public class MainActivity extends Activity {
 2
 3     private ListView listView;
 4
 5     private TimeAxisAdapter mTimeAxisAdapter;
 6
 7     private List<HashMap<String, Object>> list;
 8
 9     @Override
10     protected void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         setContentView(R.layout.activity_main);
13         initView();
14     }
15
16     private void initView() {
17         listView = (ListView) findViewById(R.id.listView);
18         listView.setDividerHeight(0);
19         mTimeAxisAdapter = new TimeAxisAdapter(this, getList());
20         listView.setAdapter(mTimeAxisAdapter);
21
22     }
23
24     public List<HashMap<String, Object>> getList() {
25         List<HashMap<String, Object>> listChild = new ArrayList<HashMap<String, Object>>();
26         HashMap<String, Object> map = new HashMap<String, Object>();
27         map.put("content", "111111111111111111");
28         listChild.add(map);
29         HashMap<String, Object> map1 = new HashMap<String, Object>();
30         map1.put("content", "2222222222222");
31         listChild.add(map1);
32         HashMap<String, Object> map2 = new HashMap<String, Object>();
33         map2.put("content", "333333333333333333");
34         listChild.add(map2);
35         HashMap<String, Object> map3 = new HashMap<String, Object>();
36         map3.put("content", "444444444444444444");
37         listChild.add(map3);
38         HashMap<String, Object> map4 = new HashMap<String, Object>();
39         map4.put("content", "5555555555555555");
40         listChild.add(map4);
41         HashMap<String, Object> map5 = new HashMap<String, Object>();
42         map5.put("content", "66666666666");
43         listChild.add(map5);
44         return listChild;
45     }
46
47 }

MainActivity的xml文件:

  

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context=".MainActivity" >
 7
 8     <ListView
 9         android:id="@+id/listView"
10         android:layout_width="match_parent"
11         android:layout_height="match_parent" >
12     </ListView>
13
14 </LinearLayout>

运行后的效果图:

源码地址

时间: 2024-10-24 13:54:04

android 简易时间轴(实质是ListView)的相关文章

Android 类似时间轴的实现

想要实现图片中的的时间轴的效果,设定了三种颜色,但是出来的只有一个黑色,还不是设定好的,而且长度很长的话不能滚动,下面上代码: 布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android

Android实现时间轴

昨天群里有讨论时间轴的项目,没有接触过,以为很吊,研究之后才知道表面都是忽悠人的,使用listview就能实现了,也没有什么新鲜的东西 废话少说,直接上图 图片和文字都可以私人订制 没什么好说的,直接上代码吧!相信你能看懂 1.时间轴item的布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.c

Android 时间轴

效果图: 数据是随便填的,显得有点乱,但是不影响效果.实现方面主要是用ListView来实现,主要是根据ListView的item位置与上一条数据进行比较,来控制时间的显示隐藏效果.思路很简单,下面看代码实现: 首先是页面的整体布局,很简单,就一个ListView: res/layout/activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and

android项目之时间轴(转载)

转载自:http://blog.csdn.net/caiwenfeng_for_23/article/details/38279317 最近开发的app中要用到时间轴这东西,需要实现的效果如下: 想想这个东西应该可以用listview实现吧.然后最近就模拟着去写了: 首先写  listview的item的布局: listview_item.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLay

Android自定义View实现垂直时间轴布局

时间轴 时间轴,顾名思义就是将发生的事件按照时间顺序罗列起来,给用户带来一种更加直观的体验.京东和淘宝的物流顺序就是一个时间轴,想必大家都不陌生,如下图: 分析 实现这个最常用的一个方法就是用ListView,我这里用继承LinearLayout的方式来实现.首先定义了一些自定义属性: attrs.xml <?xml version="1.0" encoding="utf-8"?> <resources> <declare-stylea

Android时间轴效果,直接使用在你的项目中

近期开发app搞到历史查询,受腾讯qq的启示,搞一个具有时间轴效果的ui,看上去还能够,然后立即想到分享给小伙伴,,大家一起来看看,先上效果图吧 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 接下来就是代码了,axtivity的布局代码.非常easy.就是一个listview <?xml v

listView实现时间轴

遇到一需求做一个时间轴左边是时间,右边是内容,中间就是那个轴的图片, ?1.中间轴线的图片需要根据内容的多少被拉长: ?2.顶部的圆点图片的位置不能左右边内容的顶部: ?3.底部不要轴线以圆点ImageView结束: 分析: 问题?1:设置图片parent的parent为wrap_content,设置android:minHeight="100dp",设置parent为match_parent;设置轴线ImageView为match_parent 问题?2:在轴线ImageView上面

Android简易实战教程--第十八话《ListView显示,简单的适配器SimpleAdapter》

本篇介绍Listview的显示,对于listview有许多的适配器,如ArrayAdapter,BaseAdapter,SimpleAdapter等等.本篇先热身一下,介绍最简单的SimpleAdapter适配器. 对于安卓界面的显示. 首先在主界面布局文件main.xml加入如下代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http

本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/18311877)Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果

今天还是给大家带来自定义控件的编写,自定义一个ListView的左右滑动删除Item的效果,这个效果之前已经实现过了,有兴趣的可以看下Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果,之前使用的是滑动类Scroller来实现的,但是看了下通知栏的左右滑动删除效果,确实很棒,当我们滑动Item超过一半的时候,item的透明度就变成了0,我们就知道抬起手指的时候item就被删除了,当item的透明度不为0的时候,我们抬起手指Item会回到起始位置,这样我们就知道