android 如何检测拖动外的视图触摸?

uklbhaso  于 2023-08-01  发布在  Android
关注(0)|答案(2)|浏览(159)

我正在尝试使用onTouch方法编写imageView点击反馈。我的代码用于在按下(MotionEvet.ACTION_DOWN)时缩放imageView,并在用户停止按下(MotionEvet.ACTION_UP)时返回正常大小。但我无法编码的是用户将手指从imageView中拖出来时的动作。
我见过一个解决方案,它告诉我们在switch语句的开头使用MotionEvent.ACTION_CANCEL,但这对我来说不起作用。
我的代码是下一个:

public boolean onTouch(View v, MotionEvent event) {
        int action = event.getAction();

        switch (action) {

        case MotionEvent.ACTION_CANCEL:
        clickOutTransformation(ico);
        return true;

        case MotionEvent.ACTION_UP:
        clickOutTransformation(ico);

         switch (i) {
            case 1:
            fondoApp.setBackgroundResource(R.drawable.back_blue_bubbles_lite);
            i++;
            break;
            case 2:
            fondoApp.setBackgroundResource(R.drawable.back_espectrum);
            i++;
            break;
            case 3:
            fondoApp.setBackgroundResource(R.drawable.back_black_and_violet);
            i++;
            break;
            case 4:
            fondoApp.setBackgroundResource(R.drawable.back_green);
            i++;
            break;
            case 5:
            fondoApp.setBackgroundResource(R.drawable.back_blur_blue_ed);
            i = 1;
            break;

            default:
            break;
            }
            return true;

            case MotionEvent.ACTION_DOWN:
            clickInTransformation(ico);
            return true;

            default:
            break;

            }
             return false;

            }

字符串

wlsrxk51

wlsrxk511#

你可以用这个解决方案来解决:

private Rect rect;    // Variable rect to hold the bounds of the view

public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_UP:
            if (!rect.contains(v.getLeft() + (int) event.getX(), v.getTop() + (int) event.getY())) {
                // User moved outside bounds
            }
            break;
        case MotionEvent.ACTION_DOWN:
            rect = new Rect(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
            break;
    }
    return false;
}

字符串

bnl4lu3b

bnl4lu3b2#

使用条件:用于缩放的MotionEvent.ACTION_DOWN和情况MotionEvent.ACTION_UP:缩小到正常大小
ACTION_DOWN触发,当你触摸你的屏幕和ACTION_UP触发,当你把你的手指从视图

相关问题