原理:listview显示
前提:
根据项目需求,需要利用时间轴,垂直显示当前进度
于是:
主界面的布局文件
<ListView
android:id="@+id/lv"
android:paddingTop="15dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#00000000" >
</ListView>
每一个条目的布局文件 用到了两张图片 大点24 小卡12
<?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="wrap_content"
>
<ImageView
android:id="@+id/iv_small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="54dp"
android:contentDescription="@string/app_name"
android:src="@drawable/jin_du_tiao_round_small" />
<View
android:id="@+id/view_line_normal"
android:layout_width="2dp"
android:layout_height="68dp"
android:layout_below="@+id/iv_small"
android:layout_marginLeft="57dp"
android:background="@color/line" />
<ImageView
android:id="@+id/iv_big"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp"
android:contentDescription="@string/app_name"
android:src="@drawable/jin_du_tiao_round_big" />
<TextView
android:id="@+id/tv_show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="45dp"
android:textColor="@color/btn_bg"
android:layout_toRightOf="@id/iv_small"
android:padding="3dp"
android:text="模拟显示数据"
android:textSize="12sp" />
<View
android:id="@+id/view_line"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@id/tv_show"
android:layout_marginLeft="91dp"
android:layout_marginTop="30dp"
android:background="@color/line" />
</RelativeLayout>
listview的adapter 在最后隐藏线&下划线&显示最大的点
public class MyTimeAdapter extends BaseAdapter {
private List<String> lists;
private Context context;
public MyTimeAdapter(Context context, List<String> getlists) {
this.context = context;
this.lists = getlists;
}
@Override
public int getCount() {
return lists.size();
}
@Override
public Object getItem(int position) {
return lists.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh;
if (convertView == null) {
vh = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(
条目的布局文件, null);
vh.vh_tv_show = (TextView) convertView.findViewById(R.id.tv_show);
vh.view_line_normal = convertView
.findViewById(R.id.view_line_normal);
vh.iv_point_big = (ImageView) convertView.findViewById(R.id.iv_big);
vh.view_line = convertView.findViewById(R.id.view_line);
vh.vh_tv_show.setText(lists.get(position).toString());
convertView.setTag(vh);
} else {
vh = (ViewHolder) convertView.getTag();
}
if (position == lists.size() - 1) {
vh.view_line_normal.setVisibility(View.INVISIBLE);
vh.iv_point_big.setVisibility(View.VISIBLE);
vh.view_line.setVisibility(View.GONE);
} else {
vh.iv_point_big.setVisibility(View.GONE);
vh.view_line_normal.setVisibility(View.VISIBLE);
vh.view_line.setVisibility(View.VISIBLE);
}
return convertView;
}
private class ViewHolder {
private TextView vh_tv_show;
private View view_line_normal;
private ImageView iv_point_big;
private View view_line;
}
}
主程序调用 传入list集合
private MyTimeAdapter adapter;
private List<String> lists;
private Context context;
。。。
context = this;
。。。
adapter = new MyTimeAdapter(context,
getlists());
lv.setAdapter(adapter);
主程序中造假数据 随机产生1~10中的任意数进行显示
private int random;
public List<String> getlists() {
List<String> lists = new ArrayList<String>();
random = (int) (Math.random() * 10 + 1);
for (int i = 0; i < random; i++) {
lists.add("测试内容");
}
return lists;
}
用到的:
颜色
<color name="line">#CCCCCC</color>
图片 jin_du_tiao_round_big
jin_du_tiao_round_small