Android自定义观点使用PathMeasure简单模仿系统ProgressBar(四)

  

使用PathMeasure简单模仿系统ProgressBar,效果如下:

  

 Android自定义观点使用PathMeasure简单模仿系统ProgressBar(四)

  

还蛮像的吧,有的人问了,系统自带的你闲的搞这个干嘛,当然是纯粹为了学习PathMeasure这个类。

  

PathMeasure是用来测量路径路径的,可以截取路径中某一段路径,通过改变这段路径的起点,终点,达到类似VectorDrawable中的路径动画效果:

  

直接新就可以获得PathMeasure对象:

        PathMeasure PathMeasure=new PathMeasure ();   之前      

或者         PathMeasure PathMeasure=new PathMeasure(路径,forceClosed);   之前      

其中路径代表一个路径对象,forceClosed代表你测量的路径是否闭合,如果为真,那么测量长度的时候周长会按path.close()来算。

  

也可以调用以下方法设置路径:

        pathMeasure。setPath(路径,forceClosed);   之前      

获得路径的长度:

        浮动长度=pathMeasure.getLength ();   之前      

截取路径,新截取到的赋值给一个新路径对象mDstPath

        pathMeasure。getSegment(启动、停止、mDstPath,真实);   之前      

其中启动和停止为起止长度,第四个参数代表是否startWithMoveTo,是否从移至位置开始,一般为真的。

  

要实现上面的效果,那就用属性动画写一个0到1的百分比,根据当前的百分比和原路径的长度,动态改变新路径的起止点长度:

  

1,写自定义属性,构造方法,初始化油漆、路径、测量宽高。注意路径要两个,一个装有原始数据,一个去装新截取的路径数据:

        mPath=新路径();   mDst=新路径();   之前      

2,初始化PathMeasure,并设置路径,获得原始长度:

        @Override   保护空白>   私人空间startAnim () {   ValueAnimator动画=ValueAnimator。ofFloat (0,1);   动画。setInterpolator(新DecelerateInterpolator ());   anim.setRepeatCount (ValueAnimator.INFINITE);   anim.setDuration (mAnimDuration);   动画。addUpdateListener(新ValueAnimator.AnimatorUpdateListener () {   @Override   公共空间>   @Override   保护空白>   公共空间开始(){   错装=true;   setVisibility (View.VISIBLE);   startAnim ();   }      公共空间停止(){   错装=false;   setVisibility (View.GONE);   }      公共布尔isLoading () {   返回错装;   }      之前            按钮btn=(按钮)findViewById (R.id.btn);   btn。setOnClickListener(新View.OnClickListener () {   @Override   公共空间onClick(查看v) {   如果(loadingView.isLoading ()) {   loadingView.stop ();   其他}{   loadingView.start ();   }   }   });      

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

Android自定义观点使用PathMeasure简单模仿系统ProgressBar(四)