版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】怎么在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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陕西省西安市莲湖区七十中2023-2024学年高三考前热身英语试卷含解析
- 五年级下册数学教案- 长方体的认识 北师大版
- 初中数学九年级下册《图形的相似》教学设计
- 餐饮店筹备工作计划
- 安全生产排查活动
- 初中化学教师年度述职报告总结
- 车间质量管理实训报告总结
- 生化分析仪研究进展报告
- 企业采购流程分析方法
- 单位租房的合同模板
- 【深圳市高层次人才认定标准2019年】
- 气相色谱法分析(氯氟氰菊酯和高效氯氟氰菊酯氯氰菊酯和高效氯氰菊酯)原始记录
- B族链球菌PPT课件
- 三年级下册Unit3PartALet’sspell教学设计
- 医院患者诊疗信息安全风险评估和应急工作机制制定应急预案XX医院患者诊疗信息安全风险应急预案
- 100以内两位数加一位数练习题
- 玻化微珠无机保温砂浆外墙内保温施工方案
- 浙教版初中生物知识点总复习中考专用超全
- 小学校本课程教材《趣味数学》下册(共27页)
- 华茂03灵芝胶囊
- 汽车维修技能培训教学大纲及计划
评论
0/150
提交评论