卡片式的时间轴控件。
时间轴的整体是用ListView,每个Item用com.android.timeline.TimeLineView。
而每个Item又分为:真正的节点(TimeLineView.ZONETYPEITEM)、只是一个连接线(TimeLineView.ZONETYPELINE).
效果图:
如何使用首先创建个ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdge="none"
android:divider="@null"
android:scrollingCache="false"
>
2. 创建节点布局item_time.xml,使用TimeLineView:
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res/com.example.timelinedemo"
android:id="@+id/layout_item"
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:minHeight="80dp"
android:orientation="vertical"
android:background="@drawable/button_inverse_selector"
>
android:id="@+id/item_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginLeft="70dp" />
android:id="@+id/item_name"
android:layout_width="wrap_content" android:text="asdf" android:layout_gravity="right|bottom"
android:layout_height="wrap_content" android:layout_marginRight="30dp" />
TimeLineView中的内容你可以任意定义。
3. 设置ListView,及节点状态ListView listview=(ListView)findViewById(android.R.id.list);
List list = new ArrayList();
list.add("test");
list.add("name");
list.add("asdasd");
list.add("dfg");
list.add("asdasfdhnd");
list.add("dghn");
listview.setAdapter(new ArrayAdapter(this,R.layout.item_time,R.id.item_txt,list){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view= super.getView(position, convertView, parent);
((TextView)view.findViewById(R.id.item_name)).setText(new Date().toLocaleString());
TimeLineView timelineitem=(TimeLineView)view;
if(0==position){
timelineitem.setPositionType(TimeLineView.POSITIONTYPEFIRST);//设置为首节点
}else if(getCount()-1==position){
timelineitem.setPositionType(TimeLineView.POSITIONTYPELAST);//设置为尾节点
LayoutParams param=timelineitem.getLayoutParams();
param.height=80;
timelineitem.setLayoutParams(param);
}else{
timelineitem.setPositionType(TimeLineView.POSITIONTYPEMIDDLE);//设置为中间节点
}
if(1==position){
LayoutParams param=timelineitem.getLayoutParams();
param.height=50;
timelineitem.setLayoutParams(param);
}
if(2==position){
LayoutParams param=timelineitem.getLayoutParams();
param.height=200;
timelineitem.setLayoutParams(param);
}
timelineitem.setRadioBackgroundColor(Color.parseColor("#444444"));
if(position%2==0){
timelineitem.setBackgroundResource(R.drawable.button_info_selector);
timelineitem.setZoneType(TimeLineView.ZONETYPEITEM);//真正的节点
}else{
timelineitem.setBackgroundResource(R.drawable.button_inverse_selector);
timelineitem.setZoneType(TimeLineView.ZONETYPELINE);//只是一条线
}
return view;
}});
之所以要区分首节点、中间节点、尾节点,是因为连线插槽不同:
首节点没有上面的插槽
尾节点没有下面的插槽
中间节点俩个插槽都有