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;
}
//以下代码直接拷贝到自定义view中,即可实现拖拽
//是不是很吊啊
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;
}
}
简单自定义view拖拽--桃先森
最新推荐文章于 2022-10-22 21:53:49 发布
本文介绍了一个自定义Android View的实现方法,包括如何在构造函数中读取样式属性、测量视图尺寸、布局及绘制图形。此外,还实现了触摸事件处理,使View可以进行拖拽操作。
894

被折叠的 条评论
为什么被折叠?



