1

我对这个奇怪的问题感到困惑。通常,在许多手机上,这不是问题。但是我试了三部MIUI10手机都有这个问题,其他系统都没有遇到过。或许这是MIUI10系统的bug?

如果你有MIUI10手机,请帮忙测试一下。

以及如何解决这个问题以兼容许多设备?欢迎所有帮助。

代码如下,很简单:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="50dp"
        android:padding="15dp"
        android:background="#1ad9ca"
        android:textColor="#ffffff"
        android:text="Hold to talk" />

</RelativeLayout>

findViewById(R.id.text).setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        switch (motionEvent.getAction()) {
            case MotionEvent.ACTION_DOWN:
                Log.d(TAG, "ACTION_DOWN");
                break;
            case MotionEvent.ACTION_MOVE:
                Log.d(TAG, "ACTION_MOVE");
                break;
            case MotionEvent.ACTION_UP:
                Log.d(TAG, "ACTION_UP");
                break;
            case MotionEvent.ACTION_CANCEL:
                Log.d(TAG, "ACTION_CANCEL");
                break;
        }

        return true;
    }
});

在我的设备中,按住 TextView 几秒钟并举起我的手,调用 ACTION_CANCEL,不调用 ACTION_UP。以下是日志:

D/MainActivity: ACTION_DOWN
D/MainActivity: ACTION_MOVE
D/MainActivity: ACTION_MOVE
D/MainActivity: ACTION_CANCEL

想在 ACTION_UP 情况下做一些逻辑,而不是在 ACTION_CANCEL 情况下。

测试设备信息:

Phone name: Xiaomi 8
Android system version: Android 9
MIUI system version: MIUI 10.1.2.0
4

1 回答 1

0

在我的miui手机上验证,这个问题只出现在10.2.xx版本,升级到10.3.3.0后就不再出现这个问题了。

在调度 ACTION_UP 事件时,miui 拦截该事件并将操作从 ACTION_UP 更改为 ACTION_CANCEL,但屏幕上没有任何弹出窗口显示,似乎是 10.2.xx 上的错误

于 2019-07-11T12:37:13.830 回答