效果如图,带动画
实现步骤,只需四步:
1.在res/values文件夹下新建attrs.xml文件,自定义属性如下:
2.新建自定义控件ClockView.java:
public class ClockViewextends View {
private static final int DEFAULT_COLOR_LOWER = Color.parseColor("#ffffff");//下游颜色
private static final int DEFAULT_COLOR_MIDDLE = Color.parseColor("#ffffff");//中间颜色
private static final int DEFAULT_COLOR_HIGH = Color.parseColor("#ffffff");//高的颜色
private static final int DEAFAULT_COLOR_TITLE = Color.parseColor("#ffffff");//标题颜色
private static final int DEFAULT_TEXT_SIZE_DIAL =8;//仪表盘字体大小
private static final int DEFAULT_STROKE_WIDTH =3;//仪表盘线的宽度
private static final int DEFAULT_RADIUS_DIAL =128;//转盘半径
private static final int DEAFAULT_TITLE_SIZE =10;//标题大小
private static final int DEFAULT_VALUE_SIZE =14;//下面百分比字体 值的大小
private static final int DEFAULT_ANIM_PLAY_TIME =2000;//动画时间
private int colorDialLower;//转盘下游颜色
private int colorDialMiddle;//转盘中游颜色
private int colorDialHigh;//转盘上游颜色
private int textSizeDial;//转盘文字大小
private int strokeWidthDial;//转盘中风宽度
private StringtitleDial;//转盘标题
private int titleDialSize;//转盘标题大小
private int titleDialColor;//转盘标题颜色
private int valueTextSize;//值的大小
private int animPlayTime;//动画时间
private int radiusDial;//转盘半径
private int mRealRadius;//实际半径
private float currentValue;//当前值
private PaintarcPaint;//弧的画笔
private RectFmRect;//矩形
private PaintpointerPaint;//指针
private Paint.FontMetricsfontMetrics;//字体度量
private PainttitlePaint;//标题画笔
private PathpointerPath;//指示器路径
private float mDegreesRotate ; //每一份的角度
public ClockView(Context context) {
this(context, null);
}
public ClockView(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public ClockView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initAttrs(context, attrs);
initPaint();
}
private void initAttrs(Context context, AttributeSet attrs){
//获得样式属性
TypedArray attributes = context.obtainStyledAttributes(attrs,R.styleable.ClockView);
colorDialLower = attributes.getColor(R.styleable.ClockView_color_dial_lower, DEFAULT_COLOR_LOWER);//转盘下游颜色
colorDialMiddle = attributes.getColor(R.styleable.ClockView_color_d