怎么在Android中通过自定义观点实现一个箭头沿圆转动效果

  介绍

这篇文章主要为大家详细介绍了怎么在Android中通过自定义观点实现一个箭头沿圆转动效果,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:

Android是什么

Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国谷歌公司和开放手机联盟领导及开发。

具体代码如下所示:

//MyCircleView类   {public  class  MyCircleView  extends 视图   ,//当前画笔画圆的颜色   ,private  int  CurrenCircleBoundColor;   ,private  Paint 颜料;   ,////从xml中获取的颜色   ,private  int  circleBundColor;   ,private  float  circleBoundWidth;   ,private  float  pivotX;   ,private  float  pivotY;   ,private  float 半径=130;   ,private  float  currentDegree=0;   ,private  int  currentSpeed=1;   ,private  boolean  isPause=false;   ,public  MyCircleView (Context 上下文),{   超级才能(上下文);   initView才能(上下文);   ,}   ,public  MyCircleView (Context 上下文,@Nullable  AttributeSet  attrs), {   超级才能(上下文,attrs);   initView才能(上下文);   TypedArray 才能;TypedArray =, context.obtainStyledAttributes (R.styleable.MyCircleView attrs也);   for 才能;(int 小姐:=,0;,小姐:& lt;, typedArray.getIndexCount();,我+ +),{   ,,//就是我们自定义的属性的资源id   ,,int  attr =, typedArray.getIndex(我);   ,,switch  (attr) {   ,,,case  R.styleable.MyCircleView_circlr_bound_color:   ,,,,circleBundColor =, typedArray.getColor (attr,, Color.RED);   ,,,,CurrenCircleBoundColor=circleBundColor;   ,,,,休息;   ,,,case  R.styleable.MyCircleView_circlr_bound_width:   ,,,,circleBoundWidth =, typedArray.getDimension (attr, 3);   ,,,,休息;   ,,}   ,,}   ,}   ,public  MyCircleView (Context 上下文,@Nullable  AttributeSet  attrs,, int  defStyleAttr), {   超级才能(上下文,attrs,, defStyleAttr);   initView才能(上下文);   ,}   ,private  void  initView (Context 上下文){   paint 才能=,new 油漆();   ,}   ,public  void 改变颜色(int 颜色){   if 才能;(CurrenCircleBoundColor !=颜色){   ,,CurrenCircleBoundColor=颜色;   }else {才能   ,,CurrenCircleBoundColor=circleBundColor;   ,,}   ,}   ,@Override   ,protected  void  onDraw (Canvas 画布),{   super.onDraw才能(画布);   paint.setAntiAlias才能(真正的);   paint.setColor才能(CurrenCircleBoundColor);   paint.setStrokeWidth才能(circleBoundWidth);   paint.setStyle才能(Paint.Style.STROKE);   时间=pivotX 才能;getWidth (),/, 2;   pivotY =,才能获得(),/,2;   canvas.drawCircle才能(pivotX pivotY,半径、油漆);   canvas.save才能();//才能旋转画布,,,如果旋转的的度数大的话,视觉上看着是旋转快的   canvas.rotate才能(currentDegree, pivotX pivotY);//才能提供了一些api可以用来画线(画路径)   Path 才能;Path =, new 路径();//才能从哪开始画,从一开始画   path.moveTo才能(pivotX +半径,pivotY);//从一个点才能画一个直线到D点   path.lineTo才能(pivotX + radius-20 pivotY-20);//从D点才能画一个直线到B点   path.lineTo才能(pivotX +半径,pivotY + 20);//从B点才能画一个直线到C点   path.lineTo才能(pivotY-20 pivotX +半径+ 20日);//闭才能合,,,从C点画一个直线到一个点   path.close才能();   paint.setStyle才能(Paint.Style.FILL);   paint.setColor才能(Color.BLACK);   canvas.drawPath才能(道路、油漆);   canvas.restore才能();//才能旋转的度数一个一个度数增加,,如果乘以一个速度的话,按一个速度速度增加   currentDegree才能+=1 * currentSpeed;   if 才能;(! isPause) {   ,,invalidate ();   ,,}   ,}   ,public  void 速度(){   + + currentSpeed才能;   if 才能;(currentSpeed>=10) {   ,,currentSpeed=10;   ,,Toast.makeText (getContext(),“我比闪电还快“,Toast.LENGTH_SHORT),告诉();   ,,}   ,}   ,public  void 放缓(){   ——currentSpeed才能;   if 才能;(currentSpeed<=1) {   ,,currentSpeed=1;   ,,}   ,}   ,public  void  pauseOrStart () {//才能如果是开始状态的话去重新绘制   if 才能;(isPause) {   ,,isPause=! isPause;   ,,invalidate ();   }else {才能   ,,isPause=! isPause;   ,,}   ,}   }//主页面   public  class  MainActivity  extends  AppCompatActivity  {   ,//全局变量   ,private  MyCircleView  my_view;   ,@Override   ,protected  void  onCreate (Bundle  savedInstanceState), {   super.onCreate才能(savedInstanceState);   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在Android中通过自定义观点实现一个箭头沿圆转动效果