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; } }
自定义View-放大加载-移动
最新推荐文章于 2018-07-01 11:33:11 发布