整个应用程序的onTouchEvent,没有活动

时间:2012-09-27 04:30:20

标签: android touch

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

1 个答案:

答案 0 :(得分:0)

不,你不能随意覆盖onTouchEvent,特别是在“简单的Java类”中,即不扩展View的那个。

解决方案1 ​​

如果您要捕获应用的所有触摸,请覆盖主布局中的onInterceptTouchEvent()。因此,如果您的主要布局是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

这是迄今为止最简单的解决方案,虽然我过去运气不同,并且从不建议您回复它。

您只需获取包含所有内容的View(根View,上面有LinearLayout),然后给它一个监听器。

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 {
    // ...
}