public class MyView extends View
{
/* <declare-styleable name="View">
<attr name="n/*eiDr" for/*mat="integer"></attr>
<attr name="waiDr" format="integer"></attr>
<attr name="neiColor" format="color"></attr>
<attr name="waiColor" format="color"></attr>
<attr name="text" format="string" />
</declare-styleable>*/
/* button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myView.setOnPaint(MainActivity.this);
}
});*/
private Paint paint
;
private int neiDr
;
private int waiDr
;
private int neiColor
;
private int waiColor
;
private String text
= "0.0%";
private int yuanX
= 240;
private int yuanY
= 359;
private int textX
= 226;
private int textY
= 359;
private Handler handler
= new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what
== 0) {
if (neiDr
< waiDr
) {
text
= neiDr
/ 2 + 1 + "%";
neiDr
++;
invalidate();
}else if(neiDr
==waiDr
){
handler
.removeMessages(0);
}
}
}
};
public MyView(Context context) {
this(context, null);
}
public MyView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setOnPaint(context);
}
public void setOnPaint(Context context) {
TypedArray typedArray = context.obtainStyledAttributes(R.styleable.View);
waiDr
= typedArray.getInteger(R.styleable.View_waiDr, 200);
neiColor
= typedArray.getColor(R.styleable.View_neiColor, Color.GREEN);
waiColor
= typedArray.getColor(R.styleable.View_waiColor, Color.parseColor("#888888"));
paint
= new Paint();
paint
.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint
.setColor(waiColor
);
canvas.drawCircle(yuanX
, yuanY
, waiDr
, paint
);
paint
.setColor(neiColor
);
canvas.drawCircle(yuanX
, yuanY
, neiDr
, paint
);
paint
.setColor(Color.parseColor("#000000"));
paint
.setTextSize(20);
canvas.drawText(text
, textX
, textY
, paint
);
handler
.sendEmptyMessageDelayed(0, 2);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
float nowX = event.getX();
float nowY = event.getY();
if(neiDr
==waiDr
){
yuanX
= (int) nowX;
yuanY
= (int) nowY;
textX
= (int) nowX;
textY
= (int) nowY;
invalidate();
}
break;
}
return true;
}
}
转载请注明原文地址: https://www.6miu.com/read-8392.html