Android开发随手指移动view

49 阅读1分钟
Android开发随手指移动view

随手指移动view,就效果好玩,往往一些作业上用的上

一、思路

自定义组件,关键处理onTouchEvent

二、效果图:

在这里插入图片描述

三、关键代码:
public class MyFingerView extends androidx.appcompat.widget.AppCompatImageView {
    public MyFingerView(Context context) {
        super(context);
    }

    public MyFingerView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public MyFingerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    private int mLastX;
    private int mLastY;

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int x = (int) event.getRawX();
        int y = (int) event.getRawY();
        //获取屏幕宽高
        WindowManager manager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
        int screenWidth = manager.getDefaultDisplay().getWidth();
        int screenHeight = manager.getDefaultDisplay().getHeight();

        //layout方法实现
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                break;
            case MotionEvent.ACTION_MOVE:
                //计算偏移量
                int offsetX = x - mLastX;
                int offsetY = y - mLastY;
                Log.i("offset",offsetX+"\t"+offsetY+"\t"+x+"\t"+y+"\t"+screenWidth+"\t"+screenHeight);
                //重新布局
                if (getLeft() + offsetX >= 0 && getTop() + offsetY >= 0 && getRight() + offsetX <= screenWidth && getBottom() + offsetY <= screenHeight &&
                        getTop() + offsetY <= screenHeight - getHeight()){
四、项目demo源码结构图:

在这里插入图片描述

有问题或者需要完整源码demo的可以看简介联系我,也可以私信我,我每天都看私信的