Android实现时间轴
昨天群里有讨论时间轴的项目,没有接触过,以为非常吊,研究之后才知道表面都是忽悠人的,使用listview就能实现了,也没有什么新奇的东西
废话少说,直接上图
图片和文字都能够私人订制
没什么好说的,直接上代码吧!相信你能看懂
1.时间轴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"
- >
- <LinearLayout
- android:id="@+id/left"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical" >
- <View
- android:layout_width="1dp"
- android:layout_height="25dp"
- android:layout_marginLeft="60dp"
- android:background="#A6A6A6" />
- <ImageView
- android:id="@+id/left_imageview"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="50dp"
- android:src="@drawable/medicalcheck2" />
- <View
- android:layout_width="1dp"
- android:layout_height="25dp"
- android:layout_marginLeft="60dp"
- android:background="#A6A6A6" />
- </LinearLayout>
- <LinearLayout
- android:layout_alignLeft="@id/left"
- android:layout_width="match_parent"
- android:layout_height="70dp"
- android:orientation="vertical"
- android:gravity="center"
- android:layout_marginLeft="100dp">
- <TextView
- android:id="@+id/right_textview"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="aaa"/>
- </LinearLayout>
- </RelativeLayout>
2.图片和文字的model
- package com.sdufe.thea.guo.model;
- public class TimeLineModel {
- private int imageview;
- private String text;
- public int getImageview() {
- return imageview;
- }
- public void setImageview(int imageview) {
- this.imageview = imageview;
- }
- public String getText() {
- return text;
- }
- public void setText(String text) {
- this.text = text;
- }
- public TimeLineModel(int imageview, String text) {
- super();
- this.imageview = imageview;
- this.text = text;
- }
- }
3时间轴的适配器
- package com.sdufe.thea.guo.adapter;
- import java.util.List;
- import com.sdufe.thea.guo.R;
- import com.sdufe.thea.guo.model.TimeLineModel;
- import android.content.Context;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.ImageView;
- import android.widget.TextView;
- public class TimeLineAdapter extends BaseAdapter {
- Context context;
- List<TimeLineModel> list;
- public TimeLineAdapter(Context context, List<TimeLineModel> list) {
- super();
- this.context = context;
- this.list = list;
- }
- @Override
- public int getCount() {
- if (list!=null) {
- return list.size();
- }
- return 0;
- }
- @Override
- public Object getItem(int position) {
- if (list!=null) {
- return list.get(position);
- }
- return null;
- }
- @Override
- public long getItemId(int position) {
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- ViewHold hold;
- if (convertView==null) {
- hold=new ViewHold();
- convertView=LayoutInflater.from(context).inflate(R.layout.timeline_item, null);
- convertView.setTag(hold);
- }else {
- hold=(ViewHold) convertView.getTag();
- }
- hold.imageView=(ImageView) convertView.findViewById(R.id.left_imageview);
- hold.show=(TextView) convertView.findViewById(R.id.right_textview);
- hold.imageView.setImageResource(list.get(position).getImageview());
- hold.show.setText(list.get(position).getText());
- return convertView;
- }
- static class ViewHold{
- public TextView show;
- public ImageView imageView;
- }
- }
布局中的文件都跟listview的使用一样,也贴一下代码吧,方便你我他
- package com.sdufe.thea.guo;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.Menu;
- import android.view.Window;
- import android.widget.ListView;
- import com.sdufe.thea.guo.adapter.TimeLineAdapter;
- import com.sdufe.thea.guo.model.TimeLineModel;
- public class MainActivity extends Activity {
- private ListView listView;
- private List<TimeLineModel> list;
- private TimeLineAdapter adapter;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.activity_main);
- initData();
- initView();
- }
- private void initView() {
- listView=(ListView) findViewById(R.id.listview);
- adapter=new TimeLineAdapter(this, list);
- listView.setAdapter(adapter);
- }
- private void initData() {
- list=new ArrayList<TimeLineModel>();
- list.add(new TimeLineModel(R.drawable.medicalcheck2, "哈哈"));
- list.add(new TimeLineModel(R.drawable.nurse_visit2, "呵呵"));
- list.add(new TimeLineModel(R.drawable.nursingcareplan2, "嘿嘿"));
- list.add(new TimeLineModel(R.drawable.medicalcheck2, "哈哈"));
- list.add(new TimeLineModel(R.drawable.nurse_visit2, "啦啦"));
- list.add(new TimeLineModel(R.drawable.nursingcareplan2, "咳咳"));
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
- }
ok,代码上完了,不要被非常多app的外表唬住
代码下载地址:http://download.csdn.net/detail/elinavampire/8179393
github下载地址:https://github.com/zimoguo/TimeLineDemo
Android实现时间轴的更多相关文章
- android 简易时间轴(实质是ListView)
ListView的应用 1.在很多时候是要用到时间轴的,有些处理的时间轴比较复杂,这里就给出一个比较简单的时间轴,其实就是ListView里面的Item的设计. 直接上代码: ListView,ite ...
- Android 类似时间轴的实现
想要实现图片中的的时间轴的效果,设定了三种颜色,但是出来的只有一个黑色,还不是设定好的,而且长度很长的话不能滚动,下面上代码: 布局文件: <LinearLayout xmlns:android ...
- Android 时间轴
最近开发的app中要用到时间轴这东西,需要实现的效果如下: 想想这个东西应该可以用listview实现吧.然后最近就模拟着去写了: 首先写 listview的item的布局: listview_it ...
- Android自定义指示器时间轴
指示器时间轴在外卖.购物类的APP里会经常用到,效果大概就像下面这样,看了网上很多文章,大都是自己绘制,太麻烦,其实通过ListView就可以实现. 在Activity关联的布局文件activit ...
- Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果!
Android实训案例(三)--实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果! 感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲 ...
- Android 时间轴的实现
时间轴 时间轴,顾名思义就是将发生的事件按照时间顺序罗列起来,给用户带来一种更加直观的体验.京东和淘宝的物流顺序就是一个时间轴(如图),想必大家都不陌生. 时间轴的初探 初次见到这种UI,感觉整个布局 ...
- android项目解刨之时间轴
近期开发的app中要用到时间轴这东西.须要实现的效果例如以下: 想想这个东西应该能够用listview实现吧. 然后近期就模拟着去写了: 首先写 listview的item的布局: listview ...
- Android时间轴效果,直接使用在你的项目中
近期开发app搞到历史查询,受腾讯qq的启示,搞一个具有时间轴效果的ui,看上去还能够,然后立即想到分享给小伙伴,,大家一起来看看,先上效果图吧 watermark/2/text/aHR0cDovL2 ...
- 使用ExpandableListView时间轴效果达到
不废话,首先在地图上,查看结果 这是用ExpandableListView来实现时间轴效果,原理比較简单,以月份为第一级,以天为第二级来实现的. package com.hj.main; import ...
随机推荐
- ssh登陆不上
用ssh key登陆不上某台机A的某个账号xy1,查看A的/var/log/messages,看到有这么句: User xy1 not allowed because account is locke ...
- 30、Arrays工具类
1.查询元素 int binarySearch(type[] a,type key):使用二分法查询key元素值在a数组中出现的索引:如果a数组不包含key元素,则返回负数.调用该方法时要求数组中元素 ...
- linux cut 命令
cut:以某种方式按照文件的行进行分割 参数列表: -b 按字节选取 忽略多字节字符边界,除非也指定了 -n 标志 -c 按字符选取 -d 自定义分隔符,默认为制表符. -f 与-d一起使用,指定显示 ...
- python环境变量的配置
每个python程序都须要import非常多包.有些系统包是不用安装的.有些第三方包是须要安装的. 在同一台电脑里的linux环境里,安装了第三方包,基本就适用于了整个系统环境. 这里能够用下面方法, ...
- MySQL学习记录一
1.MySQL join操作 left join以左表为基础,其记录会全部表示出来,而右表只显示满足搜索条件的记录.right join以右表为基础,其记录会全部显示出来,而左表只显示满足搜索条件的记 ...
- Asp.Net Core + SignalR 实现实时通信
一.搭建项目 1.创建一个ASP.NET Core MVC 项目 2.nuget 下载和安装 MicroSoft.AspNetCore.SignalR vs提示版本冲突 这时我们选择低版本即可 二.S ...
- python如何获取公众号下面粉丝的openid
如何获取公众号下面粉丝的openid呢,首先要获取一个access_token,这个token可不是令牌(Token),如何获取这个access_token呢?有两种方法,方法如下: # -*- co ...
- javascript、js操作json对象和字符串互相转换方法
相信前端的同学们对json并不陌生,接触过很多.但是很少人知道json的全称是什么,哈哈,我也是查资料知道的.(JSON JavaScript Object Notation是一种轻量级的数据交换格式 ...
- Kernel ridge regression(KRR)
作者:桂. 时间:2017-05-23 15:52:51 链接:http://www.cnblogs.com/xingshansi/p/6895710.html 一.理论描述 Kernel ridg ...
- unity, 不要change Default sharedMaterial
假设在场景中加一个sprite,其材质使用默认的Sprites-Default. 若调用: Color color=sprite.GetComponent<SpriteRenderer>( ...