1

アプリケーション全体のタッチ イベントを追跡する Android アプリを開発しています。onTouchEvent()そのために、アクティビティなしでオーバーライドしたいと考えています。つまり、単純な Java クラス内では、それが可能かどうかわかりません。どんなアイデアでも大歓迎です。

4

1 に答える 1

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、上記の a) を含むを取得し、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 {
    // ...
}
于 2012-09-27T04:37:37.923 に答える