超简单好用的可拖动控件

来源:互联网 发布:java栈和队列的区别 编辑:程序博客网 时间:2024/05/16 12:35
public class DraggableView extends View {    public DraggableView(Context context) {        super(context);    }    public DraggableView(Context context, @Nullable AttributeSet attrs) {        super(context, attrs);    }    public DraggableView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    float lastX,lastY;    boolean isMove;    @Override    public boolean onTouchEvent(MotionEvent event) {        switch (event.getAction()){            case MotionEvent.ACTION_DOWN:                lastX= event.getX();                lastY= event.getY();                break;            case MotionEvent.ACTION_MOVE:                if (Math.abs(event.getX() - lastX) > 10                        || Math.abs(event.getY() - lastY) > 10) {                    isMove = true;                    int x = (int) event.getX()+getLeft()-getMeasuredWidth()/2;                    int y = (int) event.getY()+getTop()-getMeasuredHeight()/2;                    int i = x + getMeasuredWidth();                    int i1 = y + getMeasuredHeight();                    this.layout(x, y, i, i1);                }                break;            case MotionEvent.ACTION_UP:                if(isMove){                    isMove = false;                }else {                    performClick();                }                break;        }        return true;    }}


原创粉丝点击