您好,登錄后才能下訂單哦!
整理文檔,搜刮出一個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); } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。