昨天群里有讨论时间轴的项目,没有接触过,以为非常吊,研究之后才知道表面都是忽悠人的,使用listview就能实现了,也没有什么新奇的东西

废话少说,直接上图

图片和文字都能够私人订制

没什么好说的,直接上代码吧!相信你能看懂

1.时间轴item的布局文件

  1. <?
  2.  
  3. xml version="1.0" encoding="utf-8"?>
  4. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. >
  8.  
  9. <LinearLayout
  10. android:id="@+id/left"
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:orientation="vertical" >
  14.  
  15. <View
  16. android:layout_width="1dp"
  17. android:layout_height="25dp"
  18. android:layout_marginLeft="60dp"
  19. android:background="#A6A6A6" />
  20.  
  21. <ImageView
  22. android:id="@+id/left_imageview"
  23. android:layout_width="wrap_content"
  24. android:layout_height="wrap_content"
  25. android:layout_marginLeft="50dp"
  26. android:src="@drawable/medicalcheck2" />
  27.  
  28. <View
  29. android:layout_width="1dp"
  30. android:layout_height="25dp"
  31. android:layout_marginLeft="60dp"
  32. android:background="#A6A6A6" />
  33. </LinearLayout>
  34.  
  35. <LinearLayout
  36. android:layout_alignLeft="@id/left"
  37. android:layout_width="match_parent"
  38. android:layout_height="70dp"
  39. android:orientation="vertical"
  40. android:gravity="center"
  41. android:layout_marginLeft="100dp">
  42.  
  43. <TextView
  44. android:id="@+id/right_textview"
  45. android:layout_width="match_parent"
  46. android:layout_height="wrap_content"
  47. android:text="aaa"/>
  48. </LinearLayout>
  49.  
  50. </RelativeLayout>

2.图片和文字的model

  1. package com.sdufe.thea.guo.model;
  2.  
  3. public class TimeLineModel {
  4.  
  5. private int imageview;
  6. private String text;
  7.  
  8. public int getImageview() {
  9. return imageview;
  10. }
  11.  
  12. public void setImageview(int imageview) {
  13. this.imageview = imageview;
  14. }
  15.  
  16. public String getText() {
  17. return text;
  18. }
  19.  
  20. public void setText(String text) {
  21. this.text = text;
  22. }
  23.  
  24. public TimeLineModel(int imageview, String text) {
  25. super();
  26. this.imageview = imageview;
  27. this.text = text;
  28. }
  29.  
  30. }

3时间轴的适配器

  1. package com.sdufe.thea.guo.adapter;
  2.  
  3. import java.util.List;
  4.  
  5. import com.sdufe.thea.guo.R;
  6. import com.sdufe.thea.guo.model.TimeLineModel;
  7.  
  8. import android.content.Context;
  9. import android.view.LayoutInflater;
  10. import android.view.View;
  11. import android.view.ViewGroup;
  12. import android.widget.BaseAdapter;
  13. import android.widget.ImageView;
  14. import android.widget.TextView;
  15.  
  16. public class TimeLineAdapter extends BaseAdapter {
  17.  
  18. Context context;
  19. List<TimeLineModel> list;
  20.  
  21. public TimeLineAdapter(Context context, List<TimeLineModel> list) {
  22. super();
  23. this.context = context;
  24. this.list = list;
  25. }
  26.  
  27. @Override
  28. public int getCount() {
  29. if (list!=null) {
  30. return list.size();
  31. }
  32. return 0;
  33. }
  34.  
  35. @Override
  36. public Object getItem(int position) {
  37. if (list!=null) {
  38. return list.get(position);
  39. }
  40. return null;
  41. }
  42.  
  43. @Override
  44. public long getItemId(int position) {
  45. return position;
  46. }
  47.  
  48. @Override
  49. public View getView(int position, View convertView, ViewGroup parent) {
  50. ViewHold hold;
  51. if (convertView==null) {
  52. hold=new ViewHold();
  53. convertView=LayoutInflater.from(context).inflate(R.layout.timeline_item, null);
  54. convertView.setTag(hold);
  55. }else {
  56. hold=(ViewHold) convertView.getTag();
  57. }
  58. hold.imageView=(ImageView) convertView.findViewById(R.id.left_imageview);
  59. hold.show=(TextView) convertView.findViewById(R.id.right_textview);
  60.  
  61. hold.imageView.setImageResource(list.get(position).getImageview());
  62. hold.show.setText(list.get(position).getText());
  63. return convertView;
  64. }
  65.  
  66. static class ViewHold{
  67. public TextView show;
  68. public ImageView imageView;
  69. }
  70.  
  71. }

布局中的文件都跟listview的使用一样,也贴一下代码吧,方便你我他

  1. package com.sdufe.thea.guo;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import android.app.Activity;
  7. import android.os.Bundle;
  8. import android.view.Menu;
  9. import android.view.Window;
  10. import android.widget.ListView;
  11.  
  12. import com.sdufe.thea.guo.adapter.TimeLineAdapter;
  13. import com.sdufe.thea.guo.model.TimeLineModel;
  14.  
  15. public class MainActivity extends Activity {
  16.  
  17. private ListView listView;
  18. private List<TimeLineModel> list;
  19. private TimeLineAdapter adapter;
  20.  
  21. @Override
  22. protected void onCreate(Bundle savedInstanceState) {
  23. super.onCreate(savedInstanceState);
  24. requestWindowFeature(Window.FEATURE_NO_TITLE);
  25. setContentView(R.layout.activity_main);
  26.  
  27. initData();
  28. initView();
  29.  
  30. }
  31.  
  32. private void initView() {
  33. listView=(ListView) findViewById(R.id.listview);
  34. adapter=new TimeLineAdapter(this, list);
  35.  
  36. listView.setAdapter(adapter);
  37. }
  38.  
  39. private void initData() {
  40. list=new ArrayList<TimeLineModel>();
  41.  
  42. list.add(new TimeLineModel(R.drawable.medicalcheck2, "哈哈"));
  43. list.add(new TimeLineModel(R.drawable.nurse_visit2, "呵呵"));
  44. list.add(new TimeLineModel(R.drawable.nursingcareplan2, "嘿嘿"));
  45. list.add(new TimeLineModel(R.drawable.medicalcheck2, "哈哈"));
  46. list.add(new TimeLineModel(R.drawable.nurse_visit2, "啦啦"));
  47. list.add(new TimeLineModel(R.drawable.nursingcareplan2, "咳咳"));
  48. }
  49.  
  50. @Override
  51. public boolean onCreateOptionsMenu(Menu menu) {
  52. // Inflate the menu; this adds items to the action bar if it is present.
  53. getMenuInflater().inflate(R.menu.main, menu);
  54. return true;
  55. }
  56.  
  57. }

ok,代码上完了,不要被非常多app的外表唬住

代码下载地址:http://download.csdn.net/detail/elinavampire/8179393

github下载地址:https://github.com/zimoguo/TimeLineDemo

Android实现时间轴的更多相关文章

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

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

  2. Android 类似时间轴的实现

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

  3. Android 时间轴

    最近开发的app中要用到时间轴这东西,需要实现的效果如下: 想想这个东西应该可以用listview实现吧.然后最近就模拟着去写了: 首先写  listview的item的布局: listview_it ...

  4. Android自定义指示器时间轴

    指示器时间轴在外卖.购物类的APP里会经常用到,效果大概就像下面这样,看了网上很多文章,大都是自己绘制,太麻烦,其实通过ListView就可以实现.   在Activity关联的布局文件activit ...

  5. Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果!

    Android实训案例(三)--实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果! 感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲 ...

  6. Android 时间轴的实现

    时间轴 时间轴,顾名思义就是将发生的事件按照时间顺序罗列起来,给用户带来一种更加直观的体验.京东和淘宝的物流顺序就是一个时间轴(如图),想必大家都不陌生. 时间轴的初探 初次见到这种UI,感觉整个布局 ...

  7. android项目解刨之时间轴

    近期开发的app中要用到时间轴这东西.须要实现的效果例如以下: 想想这个东西应该能够用listview实现吧. 然后近期就模拟着去写了: 首先写  listview的item的布局: listview ...

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

    近期开发app搞到历史查询,受腾讯qq的启示,搞一个具有时间轴效果的ui,看上去还能够,然后立即想到分享给小伙伴,,大家一起来看看,先上效果图吧 watermark/2/text/aHR0cDovL2 ...

  9. 使用ExpandableListView时间轴效果达到

    不废话,首先在地图上,查看结果 这是用ExpandableListView来实现时间轴效果,原理比較简单,以月份为第一级,以天为第二级来实现的. package com.hj.main; import ...

随机推荐

  1. ssh登陆不上

    用ssh key登陆不上某台机A的某个账号xy1,查看A的/var/log/messages,看到有这么句: User xy1 not allowed because account is locke ...

  2. 30、Arrays工具类

    1.查询元素 int binarySearch(type[] a,type key):使用二分法查询key元素值在a数组中出现的索引:如果a数组不包含key元素,则返回负数.调用该方法时要求数组中元素 ...

  3. linux cut 命令

    cut:以某种方式按照文件的行进行分割 参数列表: -b 按字节选取 忽略多字节字符边界,除非也指定了 -n 标志 -c 按字符选取 -d 自定义分隔符,默认为制表符. -f 与-d一起使用,指定显示 ...

  4. python环境变量的配置

    每个python程序都须要import非常多包.有些系统包是不用安装的.有些第三方包是须要安装的. 在同一台电脑里的linux环境里,安装了第三方包,基本就适用于了整个系统环境. 这里能够用下面方法, ...

  5. MySQL学习记录一

    1.MySQL join操作 left join以左表为基础,其记录会全部表示出来,而右表只显示满足搜索条件的记录.right join以右表为基础,其记录会全部显示出来,而左表只显示满足搜索条件的记 ...

  6. Asp.Net Core + SignalR 实现实时通信

    一.搭建项目 1.创建一个ASP.NET Core MVC 项目 2.nuget 下载和安装 MicroSoft.AspNetCore.SignalR vs提示版本冲突 这时我们选择低版本即可 二.S ...

  7. python如何获取公众号下面粉丝的openid

    如何获取公众号下面粉丝的openid呢,首先要获取一个access_token,这个token可不是令牌(Token),如何获取这个access_token呢?有两种方法,方法如下: # -*- co ...

  8. javascript、js操作json对象和字符串互相转换方法

    相信前端的同学们对json并不陌生,接触过很多.但是很少人知道json的全称是什么,哈哈,我也是查资料知道的.(JSON JavaScript Object Notation是一种轻量级的数据交换格式 ...

  9. Kernel ridge regression(KRR)

    作者:桂. 时间:2017-05-23  15:52:51 链接:http://www.cnblogs.com/xingshansi/p/6895710.html 一.理论描述 Kernel ridg ...

  10. unity, 不要change Default sharedMaterial

    假设在场景中加一个sprite,其材质使用默认的Sprites-Default. 若调用: Color color=sprite.GetComponent<SpriteRenderer>( ...