Android TimeLine 时间节点轴的实现实例代码
2017-03-09 08:53
645 查看
整理文档,搜刮出一个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); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- Android TimeLine 时间节点轴的实现
- [Android实例] 自定义控件一百行代码实现微信朋友圈九宫格图片显示
- Android实现三级联动下拉框 下拉列表spinner的实例代码
- Android使用ViewDragHelper实现QQ6.X最新版本侧滑界面效果实例代码
- Android实现沉浸式导航栏实例代码
- Android自定义控件开发实战之实现ListView下拉刷新实例代码
- android实现蓝牙文件发送的实例代码,支持多种机型
- Android入门实例四 设置日期和时间的设计与实现
- Webview实现android简单的浏览器实例代码
- Android开发中实现用户注册和登陆的代码实例分享
- Android实现桌面悬浮窗、蒙板效果实例代码
- android实现简单的画画板实例代码
- Android实现抽奖转盘实例代码
- Android 实现闪屏页和右上角的倒计时跳转实例代码
- android如何实现LBS定位实例代码
- Android实现三级联动下拉框 下拉列表spinner的实例代码
- JS小功能(setInterval实现图片效果显示时间)实例代码
- Android实例demo9之sqlite中一些要注意的地方 代码执行时间
- Android时间选择器、日期选择器实现代码
- Android自定义View实现带数字的进度条实例代码