android_studio的自定义View的圆形进度条
2017-11-05 19:26
281 查看
**需要 考试第三方** **MyView写法如下** package com.bawei.lss_yuan; 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.util.AttributeSet; import android.view.View; import java.util.Timer; import java.util.TimerTask; public class MyView extends View{ private float cx; private float cy; private float radius; private Paint paint; private int sweepAngle; private int color; public MyView(Context context) { super(context); } public MyView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); //获取自定义属性 TypedArray a=context.obtainStyledAttributes(attrs,R.styleable.MyView); //获取颜色,圆的颜色 color=a.getColor(R.styleable.MyView_circle_color, Color.BLACK); //圆的半径 radius=a.getDimension(R.styleable.MyView_circle_radius,100); //圆的距离 cx=a.getDimension(R.styleable.MyView_circle_x,260); cy=a.getDimension(R.styleable.MyView_circle_y,260); a.recycle(); paint=new Paint(); paint.setAntiAlias(true); 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); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); paint.s 4000 etColor(color); paint.setStrokeWidth(5); canvas.drawCircle(cx,cy,radius,paint); //进度条走动颜色 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.setStrokeWidth(0); //百分数颜色 paint.setColor(Color.BLACK); paint.setTextSize(15); canvas.drawText(progress+"%",cx-5,cy,paint); } } **activity_main写法如下** <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <com.bawei.lss_yuan.MyView android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> **复制values,attrs.xml的写法如下** <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyView"> <attr name="circle_color" format="color"></attr> <attr name="circle_radius" format="dimension"></attr> <attr name="circle_x" format="dimension"></attr> <attr name="circle_y" format="dimension"></attr> </declare-styleable> </resources>
相关文章推荐
- Android高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android编程基于自定义View实现绚丽的圆形进度条功能示例
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android 自定义 View 圆形进度条总结
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android自定义View绘制圆形、方形、弧形、球形四种形态的模仿下载进度条
- Android自定义View实现带百分比圆形进度条
- 4.4.1 Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android自定义控件之圆形进度条ImageView
- Android自定义View--圆形进度条RoundProgress
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android自定义计步器View刻度盘圆形进度view
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- 【Android自定义view系列】圆形百分比进度条
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android 自定义View实现圆形进度条 深入理解onDraw和onMeasure及自定义属性