android - 运动事件 Action 移动在 android studio 模拟器中不起作用

标签 android android-studio android-emulator android-custom-view

我的 Android 模拟器有问题,我有一个自定义 View ,为了控制触摸事件,我在类中使用 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。谢谢。

最佳答案

View 需要在第一个 ACTION_DOWN 事件上返回 true,只有这样它才会收到连续的触摸事件。

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

关于android - 运动事件 Action 移动在 android studio 模拟器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54409763/

相关文章:

android - 为什么 Android Studio 指示对象可能为 null,但实际上它不能为 null?

android - 如何获取存储在SD卡中的图片数量

android - 谷歌地图错误, "Failed to find provider info for com.google.android.gsf.gservices"和 "Failed to find provider info for com.google.settings"

android - Cordova 模拟器没有启动

java - 如何测试一个ListActivity?

java - 具有水平线性布局的 Android 水平 ScrollView 。如何填充整个宽度?

Android - 获取浏览器历史记录

java - 无法在 android studio 中使用 viewpager 查看选项卡布局中的选项卡名称

android - 在哪里为要在 Android 中创建的 fragment 发出服务请求?

android - 实现到我的应用程序的深层链接后,应用程序图标没有出现