A と B の 2 つのアクティビティがあります。ワンタッチ イベント MotionEvent.ACTION_DOWN を A でキャッチし、押したまま B を起動し、リリース イベント MotionEvent.ACTION_UP を B でキャッチしたいと考えています。
A には、次のコールバックを持つ OnTouchListener を持つ View v があります。
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
startActivity(new Intent(A.this, B.class));
break;
case MotionEvent.ACTION_UP:
// not called
break;
}
// false doesn't work either
return true;
}
B には、同じ種類の OnTouchListener を持つ (元の v の上に) View v2 が重複していますが、指を動かさない限り (タッチ イベントを再生成する)、アクティビティが開始されたときにB の「onTouch」が呼び出されません。
簡単に言えば、画面を長押しすると新しいアクティビティが表示され、指を離すと終了するアプリケーションを実行しています。
MotionEvent.ACTION_DOWNed 状態をあるビューから別のビューに転送することはできませんか? それとも、新しいアクティビティ B は、そこで開始されたため、A だけが利用できる現在の「画面上のタッチ リスナー」をすべてクリアしますか?
これらの MotionEvents がどのようにアクティビティにディスパッチされるか、および/または私の問題に対する解決策/ハックについて説明していただきありがとうございます。