1

我正在开发一个跟踪整个应用程序的触摸事件的 android 应用程序。为此,我想在onTouchEvent()没有活动的情况下覆盖;即,在一个简单的Java 类中,我不知道它是否可能。欢迎任何想法。

4

1 回答 1

0

不,您不能任意覆盖onTouchEvent,尤其是在“简单的 Java 类”中,即不扩展 a 的类中View

解决方案 1

如果您想捕获对应用程序的所有触摸,请onInterceptTouchEvent()在主布局中覆盖。因此,如果您的主要布局是 a LinearLayout,请执行以下操作:

public class MyTouchLayout extends LinearLayout {
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        // Do whatever with your touch event
        return false; // Do not prevent the rest of the layout from being touched
    }
}

然后,在您的 XML 中,您将使用:

<com.example.MyTouchLayout
    ...
    >

    <!-- The rest of your layout -->

</com.example.MyTouchLayout>

解决方案 2

这是迄今为止更简单的解决方案,尽管我过去有不同的运气,并且永远不会建议你回复它。

You can simply get the View that contains all your content (the root View, a LinearLayout above), then give it a listener.

View v = findViewById(android.R.id.content); // Find the root View; you may have to give it your own ID in the XML, and use that
v.setOnTouchListener(new OnTouchListener {
    // ...
}
于 2012-09-27T04:37:37.923 回答