Android自定义View StateProgressView 物流/购物流程等进度展示

效果图

Github地址https://github.com/liuhaizhu/StateProgressView-master

实现流程
  • 绘制一个从左到由逐渐填充的圆环
  • 绘制一个从左到由逐渐变色的直线 ,可设置圆角
  • 继承FrameLayout,根据传入的数据(几个节点)结合设置的数据,确定共有几个圆环和直线,然后计算并设置这些子View的大小和位置,如果文字,计算文字位置和显示文字的TextView大小
  • 然后开始执行动画,每个节点的动画绘制完成都会有一个回调动作通知下一个节点执行动画
How to use

Gradle Dependency

compile 'com.lhz:StateProgressView:1.0.1'
Attributes

Declare it inside your layout XML file like this:

<com.lhz.stateprogress.StateProgressView 
   android:id="@+id/spv"
   android:layout_height="wrap_content"
   android:layout_width="match_parent"   
   app:color_circle_fill="#d81e06"   
   app:color_circle_stroke="#d81e06"  
   app:line_height="8dp"   
   app:is_line_radius="true" 
   app:radius_circle_fill="12dp"  
   app:radius_circle_stroke="16dp"
   app:state_height="48dp"   
   app:color_text_normal="#bfbfbf"   
   app:color_line_state="#d81e06"    
   app:color_line_normal="#dbdbdb"   
 />
Set value and Perform the animation
final StateProgressView spv= (StateProgressView) findViewById(R.id.spv);
//下方带文字 设置节点集合 最后节点的index为4 直接执行动画 list是String 类型的 index要小于list的数量
spv.setItems(list, 4, 200);
//下方带文字 设置节点集合
spv.setItems(list);
//最后节点的index为2 每个节点动画时长为1000毫秒
spv.startAnim(2,1000);
//下方不带文字 设置共有四个节点 最后节点的index为2 每个节点动画时长为1000毫秒
spv.setItems(4);
spv.startAnim(2,1000);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容