Android物流跟踪

最近在网上看到时间轴的布局效果,尝试按照这个原理,实现物流跟踪的效果,目前已经实现了,效果如下图。

界面布局主要是通过listView来实现的,listView item 左右布局。左边是竖线,状态图片,竖线。右边 是 物流信息和 时间。

开始左边线的高度很不好适配,最后请教网友,用了layout_weight属性。

竖线本来使用的是ImageView显示,结果线的高度变小,宽度也随之变小,导致屏幕根本看不清左边布局中状态图片上的线。

最后采用了View来绘制竖线,效果还挺理想的额。

具体的布局如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:orientation="horizontal"
       >
      <LinearLayout
       android:layout_width="wrap_content"
       android:layout_height="fill_parent"
       android:layout_marginStart="10dip"
       android:orientation="vertical"
       android:gravity="center"
       >
        <View
            android:id="@+id/View_logistic_tracking_line1"
            android:layout_width="2dip"
            android:layout_height="20dip"
		    android:background="#DCDCDC"/>
		    <ImageView
            android:id="@+id/mgView_logistic_tracking_status"
            android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
		    android:src="@drawable/logistics_state1"
		    android:contentDescription="@string/app_name"
	        />
       <View
            android:id="@+id/View_logistic_tracking_line2"
            android:layout_width="2dip"
            android:layout_height="0dip"
            android:layout_weight="1"
		    android:background="#DCDCDC"/>
      </LinearLayout>
        <LinearLayout
	       android:id="@+id/ll_logistic_tracking_timeline"
	       android:layout_width="fill_parent"
	       android:layout_height="wrap_content"
	       android:layout_marginLeft="10dip"
	       android:layout_marginRight="10dip"
	       android:orientation="vertical"
       >
         <TextView
            android:id="@+id/tv_logistic_tracking_address"
            android:layout_width="match_parent"
	        android:layout_height="wrap_content"
	        android:layout_marginTop="20dip"
	        android:textSize="20sp"
	        android:textColor="#000000"
	        />
       <TextView
            android:id="@+id/tv_logistic_tracking_time"
	        android:layout_width="match_parent"
	        android:layout_height="wrap_content"
	        android:layout_marginTop="10dip"
	        android:layout_marginBottom="20dip"
	        android:textSize="18sp"
	        android:textColor="#000000"
	        />
      </LinearLayout>
  </LinearLayout>

自定义的适配器:

public class TimeLineAdapter extends BaseAdapter {

	private Context mcontext=null;
    private List<TimeLine> mlist=null;
	private LayoutInflater minflater;

	public TimeLineAdapter ( Context context, List<TimeLine> list  ){
		this.mcontext = context;
		minflater = LayoutInflater.from(context);
		mlist = list;
	}
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		if( null!=mlist){
			return mlist.size();
		}
		return 0;
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		if( null!=mlist){
			return mlist.get(position);
		 }
		return null;
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@SuppressLint("InflateParams")
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		 ViewHold viewHold;
		if(convertView == null){
			viewHold = new ViewHold();
			convertView = minflater.inflate(R.layout.timeline_item, null);
			viewHold.imageView1 = (ImageView)convertView.findViewById(R.id.mgView_logistic_tracking_status);
			viewHold.textView1 = (TextView)convertView.findViewById(R.id.tv_logistic_tracking_address);
			viewHold.textView2 = (TextView)convertView.findViewById(R.id.tv_logistic_tracking_time);
			viewHold.line1 = (View)convertView.findViewById(R.id.View_logistic_tracking_line1);
			convertView.setTag(viewHold);
		}else {
			viewHold = (ViewHold)convertView.getTag( );
		}
		if(position==0){
			viewHold.line1.setVisibility(View.INVISIBLE);
			viewHold.imageView1.setImageResource(R.drawable.logistics_state);
		}else{
			viewHold.line1.setVisibility(View.VISIBLE);
			viewHold.imageView1.setImageResource(R.drawable.logistics_state1);
		}
		viewHold.textView1.setText( mlist.get(position).getMaddress());
		viewHold.textView2.setText( mlist.get(position).getMtime());
		return convertView;
	}

    private final static class ViewHold{

        ImageView imageView1;
        View line1;
    	TextView  textView1;
    	TextView textView2;
    }
}

TimeLine定义:

public class TimeLine {

	private String  maddress;
	private String  mtime;

	public TimeLine( String address ,String time){

		this.maddress = address;
		this.mtime = time;
	}

	public String getMaddress() {
		return maddress;
	}

	public void setMaddress(String maddress) {
		this.maddress = maddress;
	}

	public String getMtime() {
		return mtime;
	}

	public void setMtime(String mtime) {
		this.mtime = mtime;
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-11 10:21:16

Android物流跟踪的相关文章

android快递跟踪进度条

android 快递跟踪进度条 activity.class import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; public class MainActivity extends

Div+CSS展示物流跟踪轨迹信息

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <style> #ordertrack td { verti

物流跟踪API-快递单推送

上一篇文章我们讲解了订阅服务功能.我们已经完成了如何把物流订单订阅到快递鸟,快递鸟也能接收到我们的订单信息,接下来就需要快递鸟实时的将最新的物流轨迹推送到我们服务器,我们既然要接收快递鸟的信息,就需要提供一个服务地址给快递鸟,以C#为列,我们新建一个接收页面,我的接收文件: testReceive.aspx,把他部署到服务器, 接收地址:http://www.你的域名.com/testReceive.aspx 登陆快递鸟官网,通过快递鸟提供的沙箱调试页面进去测试接口 调试页面地址: http:/

模仿京东淘宝的物流跟踪模板样式

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=no"> <style> bo

Android O (8.0) 新特性介绍

Android O 功能和 API (文章内容均来Google开发者官网,有需要可自行FQ查看更多资料) Android O 为用户和开发者引入多种新功能.本文重点介绍面向开发者的新功能.请务必查阅 android O 行为变更以了解平台变更可能影响您的应用的领域. 通知 在 Android O 中,我们已重新设计通知,以便为管理通知行为和设置提供更轻松和更统一的方式.这些变更包括:  通知渠道:Android O 引入了通知渠道,其允许您为要显示的每种通知类型创建用户可自定义的渠道.用户界面将

Android Studio 3.0 新特性

Kotlin 集成 基于IDEA 2017.1 版本构建 对Android O 的支持 对Java8的支持 新的Android Gradle 插件 Google's Maven repository 新的Android分析器(New Android Profiler) APK 调试器 新的设备文件浏览器 Instant Apps support 布局编辑器改进 新的Android Tings 模板 Layout Inspector改进 APK Analyzer 改进 新的Android模拟器功能

Android Studio 3.0 下载 使用新功能介绍

谷歌2017发布会更新了挺多内容的,而且也发布了AndroidStudio3.0预览版,一些功能先睹为快.(英语一般,有些翻译不太好) 下载地址 https://developer.android.google.cn/studio/archive.html 选择显示全部即可看到下载地址,这里给出来了. Windows (64-bit): android-studio-ide-171.4010489-windows.zip (702075896 bytes) https://dl.google.c

第11章 智能物流

第11章 智能物流 11.1智能物流概述 11.1.1传统物流与智能物流 传统物流一般指产品出厂后的包装.运输.装卸.仓储,传统上的物流活动分散在不同的经济部门.不同的企业以及企业组织内部不同的职能部门之中. 智能物流指的是将信息.运输.仓储.库存.装卸搬运以及包装等物流活动综合起来的一种新型的集成式管理,其任务是尽可能降低物流的总成本,为顾客提供最好的服务. “现代”物流是根据客户的需求,以最经济的费用,将物流从供给地向需求地转移的过程.它主要包括运输.储存.加工.包装.装卸.配送和信息处理等

Android Mokoid Open Source Project hacking

/***************************************************************************** * Android Mokoid Open Source Project hacking * * 声明: * 1. 本文主要是为了了解Android HAL工作机制,从而决定分析mokoid开源项目: * 2. 源代码URL:https://code.google.com/p/mokoid/source/checkout: * 3. 本文通