简单自定义view拖拽--桃先森

来源:互联网 发布:小工具源码 编辑:程序博客网 时间:2024/06/05 11:00
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;    }}
原创粉丝点击