首页 > 解决方案 > Motion Event Action Move 在 android studio 模拟器中不起作用

问题描述

我的 android 模拟器有问题,我有一个自定义视图和用于控制我在课堂上使用 onTochEvent 的触摸事件。所以对于不同类型的事件(例如:向下,向上,移动......),我已经纠正了一个案例。对于上下,模拟器显示没有问题,但随着移动,没有任何动作。在我的手机上,一切都很好!我也尝试过不同类型的 API,但没有奏效。这是我的 onTouch 代码:

@Override
public boolean onTouchEvent(MotionEvent event) {
    boolean result = super.onTouchEvent(event);
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            xd = event.getX();
            yd = event.getY();
            break;
        case MotionEvent.ACTION_MOVE:
            float xm = event.getX();
            float ym = event.getY();
            if(card.left < xm && card.right > xm){
                if(card.top < ym && card.bottom > ym){
                    card.top += yd - ym;
                    card.left += xd - xm;
                    card.right += xd - xm;
                    card.bottom += yd - ym;
                    postInvalidate();
                }
            }
            break;
        case MotionEvent.ACTION_UP:
            break;
        case MotionEvent.ACTION_CANCEL:
            break;
        case MotionEvent.ACTION_OUTSIDE:
            break;
        default:
    }
    return result;
}

android studio 3.3 api 24。谢谢。

标签: androidandroid-studioandroid-emulatorandroid-custom-view

解决方案


视图需要return true在第一个 ACTION_DOWN 事件上,然后才会收到连续的触摸事件。

super.onTouchEvent(event);仅当您不想处理任何特定类型的触摸事件时才返回。


推荐阅读