欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android实现快递物流跟踪布局效果

程序员文章站 2023-12-04 17:05:58
先看效果 首页activity public class traceactivity extends appcompatactivity {...

先看效果

Android实现快递物流跟踪布局效果

首页activity

public class traceactivity extends appcompatactivity {

  private listview lvtrace;
  private list<trace> tracelist = new arraylist<>(10);
  private tracelistadapter adapter;
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_trace);
    findview();
    initdata();
  }

  private void findview() {
    lvtrace = (listview) findviewbyid(r.id.lvtrace);
  }

  private void initdata() {
    // 模拟一些假的数据
    tracelist.add(new trace("2016年11月18日 上午12:04:01", "在湖北武汉洪山区光谷公司长江社区便民服务站进行签收扫描,快件已被 已签收 签收"));
    tracelist.add(new trace("2016年11月18日 上午11:57:25", "在湖北武汉洪山区光谷公司长江社区便民服务站进行派件扫描;派送业务员:老王;联系电话:17786550311"));
    tracelist.add(new trace("2016年11月17日 下午4:43:29", "在湖北武汉洪山区光谷公司进行快件扫描,将发往:湖北武汉洪山区光谷公司长江社区便民服务站"));
    tracelist.add(new trace("2016年11月17日 上午9:11:21", "从湖北武汉分拨中心发出,本次转运目的地:湖北武汉洪山区光谷公司"));
    tracelist.add(new trace("2016年11月17日 上午1:53:14", "在湖南长沙分拨中心进行装车扫描,即将发往:湖北武汉分拨中心"));
    tracelist.add(new trace("2016年11月17日 上午1:50:18", "在分拨中心湖南长沙分拨中心进行称重扫描"));
    tracelist.add(new trace("2016年11月16日 上午11:27:58", "在湖南隆回县公司进行到件扫描"));
    adapter = new tracelistadapter(this, tracelist);
    lvtrace.setadapter(adapter);
  }
}

然后适配器

public class tracelistadapter extends baseadapter {
  private context context;
  private list<trace> tracelist = new arraylist<>(1);
  private static final int type_top = 0x0000;
  private static final int type_normal= 0x0001;

  public tracelistadapter(context context, list<trace> tracelist) {
    this.context = context;
    this.tracelist = tracelist;
  }

  @override
  public int getcount() {
    return tracelist.size();
  }

  @override
  public trace getitem(int position) {
    return tracelist.get(position);
  }

  @override
  public long getitemid(int position) {
    return position;
  }

  @override
  public view getview(int position, view convertview, viewgroup parent) {
    viewholder holder;
    final trace trace = getitem(position);
    if (convertview != null) {
      holder = (viewholder) convertview.gettag();
    } else {
      holder = new viewholder();
      convertview = layoutinflater.from(context).inflate(r.layout.item_trace, parent, false);
      holder.tvaccepttime = (textview) convertview.findviewbyid(r.id.tvaccepttime);
      holder.tvacceptstation = (textview) convertview.findviewbyid(r.id.tvacceptstation);
      holder.tvtopline = (textview) convertview.findviewbyid(r.id.tvtopline);
      holder.tvdot = (textview) convertview.findviewbyid(r.id.tvdot);
      holder.tv_new = (textview) convertview.findviewbyid(r.id.tv_new);
      convertview.settag(holder);
    }

    if (getitemviewtype(position) == type_top) {
      // 第一行头的竖线不显示
      holder.tvtopline.setvisibility(view.invisible);
      holder.tv_new.setvisibility(view.visible);
      // 字体颜色加深
      holder.tvaccepttime.settextcolor(context.getresources().getcolor(r.color.red));
      holder.tvacceptstation.settextcolor(context.getresources().getcolor(r.color.red));
      holder.tvdot.setbackgroundresource(r.drawable.timelline_dot_secord);
    } else if (getitemviewtype(position) == type_normal) {
      holder.tvtopline.setvisibility(view.visible);
      holder.tv_new.setvisibility(view.invisible);
      holder.tvaccepttime.settextcolor(0xff999999);
      holder.tvacceptstation.settextcolor(0xff999999);
      holder.tvdot.setbackgroundresource(r.drawable.timelline_dot_first);
    }

    holder.tvaccepttime.settext(trace.getaccepttime());
    holder.tvacceptstation.settext(trace.getacceptstation());
    return convertview;
  }

  @override
  public int getitemviewtype(int id) {
    if (id == 0) {
      return type_top;
    }
    return type_normal;
  }

  static class viewholder {
    public textview tvaccepttime, tvacceptstation;
    public textview tvtopline, tvdot,tv_new;
  }
}

实体类

public class trace {
  /** 时间 */
  private string accepttime;
  /** 描述 */
  private string acceptstation;

  public trace() {
  }

  public trace(string accepttime, string acceptstation) {
    this.accepttime = accepttime;
    this.acceptstation = acceptstation;
  }

  public string getaccepttime() {
    return accepttime;
  }

  public void setaccepttime(string accepttime) {
    this.accepttime = accepttime;
  }

  public string getacceptstation() {
    return acceptstation;
  }

  public void setacceptstation(string acceptstation) {
    this.acceptstation = acceptstation;
  }
}

activity布局和item布局

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/activity_main"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  android:background="@android:color/white"
  tools:context="cc.duduhuo.timelinedemo.traceactivity">

  <listview
    android:id="@+id/lvtrace"
    android:layout_width="match_parent"
    android:divider="@null"
    android:clickable="false"
    android:listselector="@android:color/transparent"
    android:dividerheight="0dp"
    android:layout_height="wrap_content" />
</linearlayout>
<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:gravity="center"
  android:orientation="horizontal">

  <relativelayout
    android:id="@+id/rltimeline"
    android:layout_width="75dp"
    android:layout_height="match_parent">

    <textview
      android:id="@+id/tvtopline"
      android:layout_width="0.5dp"
      android:layout_height="12dp"
      android:layout_centerhorizontal="true"
      android:background="#999" />

    <textview
      android:id="@+id/tvdot"
      android:layout_width="5dp"
      android:layout_height="5dp"
      android:layout_margin="2dp"
      android:layout_below="@id/tvtopline"
      android:layout_centerhorizontal="true"
      android:background="@drawable/timelline_dot_normal" />

    <textview
      android:layout_width="0.5dp"
      android:layout_height="match_parent"
      android:layout_below="@id/tvdot"
      android:layout_centerhorizontal="true"
      android:background="#999" />
    <textview
      android:id="@+id/tv_new"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="最新"
      android:textcolor="#ffffff"
      android:background="#ff0000"
      android:textsize="12sp"
      android:layout_marginleft="3dp"
      android:paddingleft="3dp"
      android:paddingright="3dp"
      android:layout_torightof="@id/tvdot"
      android:layout_below="@id/tvtopline"
      />
  </relativelayout>

  <relativelayout
    android:id="@+id/rlcenter"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingbottom="6dp"
    android:paddingright="10dp"
    android:paddingleft="10dp"
    android:paddingtop="6dp">

    <textview
      android:id="@+id/tvaccepttime"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="2014/06/24 20:55:28"
      android:textcolor="#999"
      android:textsize="12sp" />

    <textview
      android:id="@+id/tvacceptstation"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@id/tvaccepttime"
      android:layout_margintop="5dp"
      android:text="在湖南隆回县公司进行到件扫描"
      android:textcolor="#999"
      android:textsize="12sp" />
  </relativelayout>
</linearlayout>

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