全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android TimeLine 时间节点轴的实现实例代码

整理文档,搜刮出一个Android TimeLine 时间节点轴的实现实例代码,稍微整理精简一下做下分享。

效果图

具体实现 (RecyclerView)

1.Adapter

package com.haoren.timeline;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

/**
 * Created by Hh on 2017/3/8.
 */
public class TimeLineAdapter extends RecyclerView.Adapter<TimeLineAdapter.HorizontalVh> {

  private Context context;


  //时间节点数
  private int nodeNum = 0;

  //当前到达节点
  private int currentNode = 1;


  public TimeLineAdapter(Context context, int nodeNum) {
    this.context = context;
    this.nodeNum = nodeNum;
  }

  @Override
  public HorizontalVh onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(context).inflate(R.layout.time_line, null, false);
    HorizontalVh vh = new HorizontalVh(view);
    return vh;
  }

  @Override
  public void onBindViewHolder(HorizontalVh holder, int position) {
    if (position < currentNode) {
      //当前节点之前的全部设为已经经过
      holder.point.setImageResource(R.mipmap.point_select);
      holder.lineLeft.setBackgroundResource(R.color.colorPrimary);
      holder.lineRight.setBackgroundResource(R.color.colorPrimary);
    }

    // 去掉左右两头的分支
    if (position == 0) {
      holder.lineLeft.setVisibility(View.INVISIBLE);
    }
    if (position == nodeNum - 1) {
      holder.lineRight.setVisibility(View.INVISIBLE);
    }
  }

  @Override
  public int getItemCount() {
    return nodeNum;
  }

  /**
   * 设置当前节点
   * @param currentNode
   */
  public void setCurrentNode(int currentNode) {
    this.currentNode = currentNode;
    this.notifyDataSetChanged();
  }

  class HorizontalVh extends RecyclerView.ViewHolder {
    private ImageView point;

    private View lineLeft, lineRight;


    public HorizontalVh(View itemView) {
      super(itemView);
      this.point = (ImageView) itemView.findViewById(R.id.point);
      this.lineLeft = itemView.findViewById(R.id.line_left);
      this.lineRight = itemView.findViewById(R.id.line_right);
    }
  }
}

item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:layout_height="50dp"
  android:gravity="center_horizontal"
  android:orientation="vertical">

  <RelativeLayout
    android:layout_marginTop="20dp"
    android:layout_width="40dp"
    android:layout_height="wrap_content">

    <View
      android:id="@+id/line_left"
      android:layout_width="20dp"
      android:layout_height="1dp"
      android:layout_centerVertical="true"
      android:background="#A6A6A6" />


    <View
      android:id="@+id/line_right"
      android:layout_width="20dp"
      android:layout_height="1dp"
      android:layout_centerVertical="true"
      android:layout_toRightOf="@+id/line_left"
      android:background="#A6A6A6" />

    <ImageView
      android:id="@+id/point"
      android:layout_width="15dp"
      android:layout_height="15dp"
      android:layout_centerHorizontal="true"
      android:scaleType="center"
      android:src="@mipmap/point_normal" />
  </RelativeLayout>

  <TextView
    android:id="@+id/show_time"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="node"
    android:textSize="11sp" />
</LinearLayout>

MainActivity

package com.haoren.timeline;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

public class MainActivity extends AppCompatActivity {

  private RecyclerView mRecyclerView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mRecyclerView = (RecyclerView) findViewById(R.id.mRecyclerView);

    initAdapter();
  }

  private void initAdapter() {
    TimeLineAdapter adapter = new TimeLineAdapter(this, 8);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
    mRecyclerView.setAdapter(adapter);
    adapter.setCurrentNode(5);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# timeline时间轴  # android  # timeline  # 时间轴  # Android之RecyclerView实现时光轴效果示例  # Android时光轴实现淘宝物流信息浏览效果  # Android自定义View实现垂直时间轴布局  # Android控件之使用ListView实现时间轴效果  # Android自定义view仿淘宝快递物流信息时间轴  # 教你3分钟了解Android 简易时间轴的实现方法  # Android自定义时间轴的实现过程  # Android实现列表时间轴  # Android实现快递物流时间轴效果  # Android自定义recyclerView实现时光轴效果  # 设为  # 大家多多  # 文档  # inflate  # layout  # parent  # viewType  # false  # vh  # time_line  # null  # onCreateViewHolder  # private  # context  # HorizontalVh  # gt  # currentNode  # Override  # int  # nodeNum 


相关文章: 网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  音响网站制作视频教程,隆霸音响官方网站?  简单实现Android文件上传  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  湖北网站制作公司有哪些,湖北清能集团官网?  如何规划企业建站流程的关键步骤?  在线教育网站制作平台,山西立德教育官网?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  ,南京靠谱的征婚网站?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  如何在香港服务器上快速搭建免备案网站?  如何快速生成可下载的建站源码工具?  建站之星图片链接生成指南:自助建站与智能设计教程  建站之星后台密码如何安全设置与找回?  如何高效生成建站之星成品网站源码?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  如何在建站之星网店版论坛获取技术支持?  如何选择高效便捷的WAP商城建站系统?  江苏网站制作公司有哪些,江苏书法考级官方网站?  如何快速生成凡客建站的专业级图册?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  建站之星如何修改网站生成路径?  手机网站制作与建设方案,手机网站如何建设?  如何快速搭建自助建站会员专属系统?  建站之星各版本价格是多少?  高端网站建设与定制开发一站式解决方案 中企动力  广平建站公司哪家专业可靠?如何选择?  Python lxml的etree和ElementTree有什么区别  制作旅游网站html,怎样注册旅游网站?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  如何设计高效校园网站?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  如何挑选优质建站一级代理提升网站排名?  微信小程序 五星评分(包括半颗星评分)实例代码  如何在景安服务器上快速搭建个人网站?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  如何使用Golang table-driven基准测试_多组数据测量函数效率  深入理解Android中的xmlns:tools属性  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  如何用wdcp快速搭建高效网站?  网站代码制作软件有哪些,如何生成自己网站的代码?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  如何彻底删除建站之星生成的Banner?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  制作网站公司那家好,网络公司是做什么的?  如何在阿里云完成域名注册与建站?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  建站之星代理如何获取技术支持? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。