public class MyView2 extends View {
private int integer;
private int index;
private float x;
private float y;
public MyView2(Context context) {
this(context, null);
}
public MyView2(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public MyView2(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyView2, defStyleAttr, 0);
int n = a.getIndexCount();
for (int i = 0; i < n; i++) {
int attr = a.getIndex(i);
switch (attr) {
case R.styleable.MyView2_radius2:
integer = a.getInteger(attr, 0);
break;
}
}
a.recycle();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.RED);
Paint paint1 = new Paint();
paint1.setColor(Color.BLUE);
paint1.setTextSize(50);
Paint paint3 = new Paint();
paint3.setColor(Color.YELLOW);
paint3.setStyle(Paint.Style.STROKE);
paint3.setStrokeWidth(20);
canvas.drawCircle(300, 300, integer, paint);
canvas.drawText(index + "", 250, 300, paint1);
canvas.drawCircle(300, 300, 150, paint3);
}
public void setInteger(int radius) {
this.integer = radius;
}
public void setText(int text) {
this.index = text;
}
private int lastX = 0;
private int lastY = 0;
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int dx = (int) event.getRawX() - lastX;
int dy = (int) event.getRawY() - lastY;
int left = getLeft() + dx;
int top = getTop() + dy;
int right = getRight() + dx;
int bottom = getBottom() + dy;
layout(left, top, right, bottom);
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
break;
case MotionEvent.ACTION_UP:
break;
default:
break;
}
return true;
}
}