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