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