2018-05-14 10:58:45 576浏览
本文实例为大家分享了Android实现自动转圈效果展示的具体代码,供大家参考,具体内容如下:
<?xmlversion="1.0"encoding="utf-8"?> <resources> <declare-styleablename="MyPb"> <attrname="circle_color"format="color"/> <attrname="circle_radius"format="dimension"/><!--尺寸--> <attrname="circle_x"format="dimension"/> <attrname="circle_y"format="dimension"/> </declare-styleable> </resources>
packagewidget; importandroid.content.Context; importandroid.content.res.TypedArray; importandroid.graphics.Canvas; importandroid.graphics.Color; importandroid.graphics.Paint; importandroid.graphics.RectF; importandroid.support.annotation.Nullable; importandroid.util.AttributeSet; importandroid.view.View; importcom.bwie.zdycircle.R; importjava.util.Timer; importjava.util.TimerTask; /** *CreatedbyAdministratoron2017/12/7. */ publicclassMyPbextendsView{ privatefloatradius,cx,cy; privatePaintpaint; privatefloatsweepAngle;//旋转角度 publicMyPb(Contextcontext){ super(context,null); } publicMyPb(Contextcontext,@NullableAttributeSetattrs){ super(context,attrs); //获取自定义的属性 TypedArraya=context.obtainStyledAttributes(attrs,R.styleable.MyPb); //获取颜色 intcolor=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=newPaint(); paint.setAntiAlias(true);//抗锯齿 paint.setColor(color); paint.setStyle(Paint.Style.STROKE);//空心 Timertimer=newTimer(); timer.schedule(newTimerTask(){ @Override publicvoidrun(){ if(sweepAngle>360){ return; } sweepAngle+=1; postInvalidate(); } },1000,20);//每隔20毫秒执行一次 } @Override protectedvoidonDraw(Canvascanvas){ paint.setColor(Color.BLUE); paint.setStrokeWidth(10); canvas.drawCircle(cx,cy,radius,paint);//画圆 paint.setStrokeWidth(20);//粗细 //画运动的轨迹 paint.setColor(Color.RED); //上下左右与圆重合,左边为圆心的横坐标减去半径,上边为纵坐标减去半径,以此类推 RectFrectF=newRectF(cx-radius,cy-radius,cx+radius,cy+radius); //起始角度,旋转角度,第三个属性为是否填充,画笔 canvas.drawArc(rectF,-90,sweepAngle,false,paint); //绘制文字 intprogress=(int)(sweepAngle/360f*100); paint.setTextSize(50); paint.setStrokeWidth(0); paint.setColor(Color.BLACK); canvas.drawText(progress+"%",cx-20,cy,paint); } }
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns: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培训官网、微信公众号平台,扣丁学堂Android视频教程从零基础到精通免费试听试学,就业终端服务系统随时监控学员的学习情况和效果,顺利毕业后根据学员自身风格和学习效果推荐就业。如果你想要学习Android开发工程师技术就不要再犹豫了,喜欢就付诸行动吧
【关注微信公众号获取更多学习资料】