【移动应用开发技术】怎么在Android中使用StepView实现一个物流进度效果_第1页
【移动应用开发技术】怎么在Android中使用StepView实现一个物流进度效果_第2页
【移动应用开发技术】怎么在Android中使用StepView实现一个物流进度效果_第3页
【移动应用开发技术】怎么在Android中使用StepView实现一个物流进度效果_第4页
【移动应用开发技术】怎么在Android中使用StepView实现一个物流进度效果_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】怎么在Android中使用StepView实现一个物流进度效果

怎么在Android中使用StepView实现一个物流进度效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。思路思路:主要是进行了动态添加,根据上面的效果展示,创建一个子布局,如下图所示(代码里面的布局图一个ImageView一个View一个TextView),然后自定义一个MyVerticalView继承LinearLayout(注意设置orientation),在MyVerticalView中根据数据来addview()就可以了代码

Modelmode的具体变量是根据上面item的布局,我们需要知道当前的状态跟具体过程描述。状态分为下面三种情况:STATE_PROCESSING:正在进行中(图标如下)

STATE_COMPLETED:已经完成(图标如下)

STATE_DEFAULT:最后默认步骤(图标如下)根据上面分析需要两个变量,currentState是为了根据状态设置不同图标的private

String

description;//当前状态描述

private

String

currentState;//当前状态(上面三个状态中的一个)完整public

class

StepModel

{

public

static

final

String

STATE_PROCESSING="PROCESSING";//正在进行的状态

public

static

final

String

STATE_COMPLETED="COMPLETED";//已经完成的状态

public

static

final

String

STATE_DEFAULT="DEFAULT";//结尾的默认状态

private

String

description;//当前状态描述

private

String

currentState;//当前状态(上面三个状态中的一个)

public

StepModel(String

description,

String

currentState)

{

this.description

=

description;

this.currentState

=

currentState;

}

public

String

getCurrentState()

{

return

currentState;

}

public

void

setCurrentState(String

currentState)

{

this.currentState

=

currentState;

}

public

String

getDescription()

{

return

description;

}

public

void

setDescription(String

description)

{

this.description

=

description;

}

}StepViewpublic

class

MyVerticalStepView

extends

LinearLayout

{

private

List<StepModel>

mDatas

=

new

ArrayList<>();//下面给出了它的set跟get方法

private

Context

mContext;

public

MyVerticalStepView(Context

context)

{

this(context,

null);

}

public

MyVerticalStepView(Context

context,

AttributeSet

attrs)

{

this(context,

attrs,

0);

}

public

MyVerticalStepView(Context

context,

AttributeSet

attrs,

int

defStyleAttr)

{

super(context,

attrs,

defStyleAttr);

mContext

=

context;

}

private

void

init()

{

setOrientation(VERTICAL);

mDatas

=

getmDatas();//获取数据

for

(int

i

=

0;

i

<

mDatas.size();

i++)

{

//获取布局,注意第二个参数一定是ViewGroup,否则margin

padding之类的属性将不能使用

View

itemview

=

LayoutInflater.from(mContext).inflate(R.layout.stepview_item,

this,

false);

TextView

description

=

(TextView)

itemview.findViewById(R.id.description_tv);

View

line

=

itemview.findViewById(R.id.line_v);

ImageView

icon

=

(ImageView)

itemview.findViewById(R.id.stepicon_iv);

description.setText(mDatas.get(i).getDescription());

//根据不同状态设置不同图标

switch

(mDatas.get(i).getCurrentState())

{

case

StepModel.STATE_COMPLETED:

icon.setImageResource(R.plted);

break;

case

StepModel.STATE_DEFAULT:

//结尾图标隐藏竖线

line.setVisibility(GONE);

icon.setImageResource(R.drawable.default_icon);

break;

case

StepModel.STATE_PROCESSING:

icon.setImageResource(R.drawable.attention);

break;

}

this.addView(itemview);

}

requestLayout();//重新绘制布局

invalidate();//刷新当前界面

}

public

List<StepModel>

getmDatas()

{

return

mDatas;

}

public

void

setmDatas(List<StepModel>

mDatas)

{

this.mDatas

=

mDatas;

init();

}

}Activity调用public

class

StepViewDemoActivity

extends

AppCompatActivity

{

private

MyVerticalStepView

mStepView;

@Override

protected

void

onCreate(@Nullable

Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.stepviewlayout);

mStepView=

(MyVerticalStepView)

findViewById(R.id.stepview);

init();

}

private

void

init()

{

List<StepModel>

datas=new

ArrayList<>();

StepModel

step1=new

StepModel("您已提交订单,等待系统确认",StepModel.STATE_COMPLETED);

StepModel

step2=new

StepModel("订单已确认并打包,预计12月16日送达",StepModel.STATE_COMPLETED);

StepModel

step3=new

StepModel("包裹正在路上",StepModel.STATE_COMPLETED);

StepModel

step4=new

StepModel("包裹正在派送",StepModel.STATE_PROCESSING);

StepModel

step5=new

StepModel("感谢光临涂涂女装(店铺号85833577),淘宝店铺,关注店铺更多动态尽在微淘动态!",StepModel.STATE_DEFAULT);

datas.add(step1);

datas.add(step2);

datas.add(step3);

datas.add(step4);

datas.add(step5);

mStepView.setmDatas(datas);

}

}布局itemview布局<?xml

version="1.0"

encoding="utf-8"?>

<RelativeLayout

xmlns:android="/apk/res/android"

android:orientation="horizontal"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:paddingTop="5dp"

android:background="@color/stepviewbg"

>

<LinearLayout

android:id="@+id/left"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical"

android:paddingRight="10dp"

android:paddingLeft="10dp"

>

<ImageView

android:id="@+id/stepicon_iv"

android:layout_width="15dp"

android:layout_height="15dp"

android:src="@drawable/attention"

/>

<View

android:id="@+id/line_v"

android:layout_width="2dp"

android:layout_height="30dp"

android:background="@color/uncompleted_text_color"

android:layout_gravity="center_horizontal"

android:visibility="visible"

></View>

</LinearLayout>

<LinearLayout

android:layout_toRightOf="@+id/left"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:orientation="vertical"

android:paddingRight="10dp"

android:paddingLeft="10dp"

>

<TextView

android:id="@+id/description_tv"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:textSize="18sp"

android:textColor="@color/uncompleted_text_color"

android:text="订单正在派送中"/>

</LinearLayout>

</RelativeLayout>stepview布局<?xml

version="1.0"

encoding="utf-8"?>

<LinearLayout

xmlns:android="/apk/res/android"

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论