android项目之时间轴(转载)

转载自:http://blog.csdn.net/caiwenfeng_for_23/article/details/38279317

最近开发的app中要用到时间轴这东西,需要实现的效果如下:

想想这个东西应该可以用listview实现吧。然后最近就模拟着去写了:

首先写  listview的item的布局:

listview_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. android:orientation="vertical"
  7. android:paddingRight="20dp" >
  8. <View
  9. android:id="@+id/view_0"
  10. android:layout_width="1dp"
  11. android:layout_height="25dp"
  12. android:layout_below="@+id/layout_1"
  13. android:layout_marginLeft="71dp"
  14. android:background="#A6A6A6" />
  15. <View
  16. android:id="@+id/view_1"
  17. android:layout_width="1dp"
  18. android:layout_height="25dp"
  19. android:layout_below="@+id/layout_2"
  20. android:layout_marginLeft="71dp"
  21. android:background="#A6A6A6" />
  22. <TextView
  23. android:id="@+id/show_time"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:layout_below="@+id/view_1"
  27. android:layout_marginLeft="30dp"
  28. android:text="测试数据"
  29. android:textSize="12dp" />
  30. <ImageView
  31. android:id="@+id/image"
  32. android:layout_width="15dp"
  33. android:layout_height="15dp"
  34. android:layout_below="@+id/view_1"
  35. android:layout_marginLeft="65dp"
  36. android:src="@drawable/timeline_green" />
  37. <View
  38. android:id="@+id/view_2"
  39. android:layout_width="1dp"
  40. android:layout_height="100dp"
  41. android:layout_below="@+id/image"
  42. android:layout_marginLeft="71dp"
  43. android:background="#A6A6A6" />
  44. <RelativeLayout
  45. android:id="@+id/relative"
  46. android:layout_width="fill_parent"
  47. android:layout_height="wrap_content"
  48. android:layout_below="@+id/image"
  49. android:layout_marginTop="-20dp"
  50. android:layout_toRightOf="@+id/image"
  51. android:background="@drawable/timeline_content"
  52. android:padding="10dp" >
  53. <ImageView
  54. android:id="@+id/image_1"
  55. android:layout_width="60dp"
  56. android:layout_height="60dp"
  57. android:layout_alignParentLeft="true"
  58. android:layout_centerVertical="true"
  59. android:layout_marginLeft="5dp"
  60. android:src="@drawable/bg_green_circle_smic" />
  61. <TextView
  62. android:id="@+id/title"
  63. android:layout_width="wrap_content"
  64. android:layout_height="wrap_content"
  65. android:layout_centerHorizontal="true"
  66. android:layout_centerVertical="true"
  67. android:ellipsize="end"
  68. android:maxEms="7"
  69. android:paddingLeft="5dp"
  70. android:singleLine="true"
  71. android:text="测试数据"
  72. android:textSize="12sp" />
  73. </RelativeLayout>
  74. </RelativeLayout>

接下来就是写listview的adapter了:

TimelineAdapter.java

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

最后使用:

MainActivity.java

  1. package com.example.timelinetext.test;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import android.app.Activity;
  7. import android.os.Bundle;
  8. import android.widget.ListView;
  9. public class MainActivity extends Activity {
  10. private ListView listView;
  11. List<String> data ;
  12. private TimelineAdapter timelineAdapter;
  13. @Override
  14. protected void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.activity_listview);
  17. listView = (ListView) this.findViewById(R.id.listview);
  18. listView.setDividerHeight(0);
  19. timelineAdapter = new TimelineAdapter(this, getData());
  20. listView.setAdapter(timelineAdapter);
  21. }
  22. private List<Map<String, Object>> getData() {
  23. List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  24. Map<String, Object> map = new HashMap<String, Object>();
  25. map.put("title", "这是第1行测试数据");
  26. list.add(map);
  27. map = new HashMap<String, Object>();
  28. map.put("title", "这是第2行测试数据");
  29. list.add(map);
  30. map = new HashMap<String, Object>();
  31. map.put("title", "这是第3行测试数据");
  32. list.add(map);
  33. map = new HashMap<String, Object>();
  34. map.put("title", "这是第4行测试数据");
  35. list.add(map);
  36. return list;
  37. }
  38. }

运行效果如图:

所以模拟着去写一个时间轴,并不是什么复杂的事情,不要被UI设计的图片吓到,其实他就是一个普通的listview而已。

时间: 2024-08-08 09:34:07

android项目之时间轴(转载)的相关文章

Android 类似时间轴的实现

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

iOS中各种风格时间轴的设计及总结

前言 上一篇给大家总结了绘图各种画法,今天紧接着给大家在总结时间轴的各种设计,其中也用到了绘图. 时间轴有什么作用呢? 现在在项目当中时间轴已经变得无处不在了.最典型的就是社交媒体了,像Facebook和人人网这样的SNS社区会将你的生活以时间轴的形式呈现出来,QQ,微博和Twitter也自不必说,同样以时间轴来排列信息,而移动APP Path更是以时间轴而出名. 时间轴不仅帮助用户梳理信息,更是用户交互的基础规则. 今天就给大家讲讲各种时间轴风格的不同实现.在这里先让大家看看这3种时间轴风格的

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

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

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 简易时间轴(实质是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.andro

Eclipse打开Android项目报Parsing Data for android-21 failed错误的解决办法(转载)

转载:http://segmentfault.com/blog/hongliang/1190000000739285 今天手贱,用android命令打开SDK Manager下载了最新的Android 5.0 SDK: 结果用Eclipse打开cocos2d-x的proj.android项目就各种报错,第一个典型的错误是启动Eclipse后Eclipse自己就报Parsing Data for android-21 failed错误,没理会它,继续打开项目,发现libcocos2dx项目无法生成

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

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

Android 开源项目分类汇总(转载)

Android 开源项目第一篇——个性化控件(View)篇  包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView.ScrollView.TimeView.TipView.FlipView.ColorPickView.GraphView.UI Style.其他Android 开源项目第二篇——工具库篇  包括依赖注入.图片缓存.网络请求.数据库 ORM 工具包.Android 公共库