Android自定义View实现自动转圈效果

Android自定义View实现自动转圈效果,第1张

概述本文实例为大家分享了Android实现自动转圈效果展示的具体代码,供大家参考,具体内容如下

本文实例为大家分享了AndroID实现自动转圈效果展示的具体代码,供大家参考,具体内容如下

在values文件夹下创建attrs.xml

<?xml version="1.0" enCoding="utf-8"?><resources> <declare-styleable name="MyPb">  <attr name="circle_color" format="color" />  <attr name="circle_radius" format="dimension" /><!-- 尺寸 -->  <attr name="circle_x" format="dimension" />  <attr name="circle_y" format="dimension" /> </declare-styleable></resources>

写一个类继承vIEw

package Widget;import androID.content.Context;import androID.content.res.TypedArray;import androID.graphics.Canvas;import androID.graphics.color;import androID.graphics.Paint;import androID.graphics.RectF;import androID.support.annotation.Nullable;import androID.util.AttributeSet;import androID.vIEw.VIEw;import com.bwIE.zdycircle.R;import java.util.Timer;import java.util.TimerTask;/** * Created by administrator on 2017/12/7. */public class MyPb extends VIEw { private float radius,cx,cy; private Paint paint; private float sweepAngle;// 旋转角度 public MyPb(Context context) {  super(context,null); } public MyPb(Context context,@Nullable AttributeSet attrs) {  super(context,attrs);  // 获取自定义的属性  TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.MyPb);  // 获取颜色  int color = a.getcolor(R.styleable.MyPb_circle_color,color.BLACK);// 获取不到给默认值  radius = a.getDimension(R.styleable.MyPb_circle_radius,20);  cx = a.getDimension(R.styleable.MyPb_circle_x,100);  cy = a.getDimension(R.styleable.MyPb_circle_y,100);  // 需要回收  a.recycle();  paint = new Paint();  paint.setAntiAlias(true);// 抗锯齿  paint.setcolor(color);  paint.setStyle(Paint.Style.stroke);// 空心  Timer timer = new Timer();  timer.schedule(new TimerTask() {   @OverrIDe   public voID run() {    if (sweepAngle > 360) {     return;    }    sweepAngle += 1;    postInvalIDate();   }  },1000,20);// 每隔20毫秒执行一次 } @OverrIDe protected voID onDraw(Canvas canvas) {  paint.setcolor(color.BLUE);  paint.setstrokeWIDth(10);  canvas.drawCircle(cx,cy,radius,paint);// 画圆  paint.setstrokeWIDth(20);// 粗细  // 画运动的轨迹  paint.setcolor(color.RED);  // 上下左右与圆重合,左边为圆心的横坐标减去半径,上边为纵坐标减去半径,以此类推  RectF rectF = new RectF(cx - radius,cy - radius,cx + radius,cy + radius);  // 起始角度,旋转角度,第三个属性为是否填充,画笔  canvas.drawArc(rectF,-90,sweepAngle,false,paint);  // 绘制文字  int progress = (int) (sweepAngle / 360f * 100);  paint.setTextSize(50);  paint.setstrokeWIDth(0);  paint.setcolor(color.BLACK);  canvas.drawText(progress + "%",cx - 20,paint); }}

在主页面布局中引入自定义view类

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:app="http://schemas.androID.com/apk/res-auto" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" tools:context="com.bwIE.zdycircle.MainActivity"> <Widget.MyPb  androID:layout_wIDth="wrap_content"  androID:layout_height="wrap_content"  app:circle_color="#0000ff"  app:circle_radius="70dp"  app:circle_x="200dp"  app:circle_y="200dp" /></linearLayout>

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

您可能感兴趣的文章:利用Android画圆弧canvas.drawArc()实例详解Android自定view画圆效果Android自定义View画圆功能Android自定义组件跟随自己手指主动画圆Android项目实战手把手教你画圆形水波纹loadingview 总结

以上是内存溢出为你收集整理的Android自定义View实现自动转圈效果全部内容,希望文章能够帮你解决Android自定义View实现自动转圈效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1142692.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存