私は自分のアプリケーションを上から見た(透明な)ビューを持っています。
これは、5 秒間の長押しをキャッチしてメニューを開くことになっています。だから私は OnTouchListener を実装しました。このような :
public boolean onTouch(View v, MotionEvent event)
{
long downtime = 0;
long eventt = 0;
boolean returnvalue = false;
switch (event.getAction() & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN:
eventt = event.getEventTime();
returnvalue = true;
break;
case MotionEvent.ACTION_UP:
downtime = event.getDownTime();
if (eventt - downtime > 5000)
{
Main.changePlayerDialog.show();
returnvalue = true;
}
else
{
returnvalue = false;
//return false;
}
break;
default:
break;
}
return returnvalue;
}
});
今、5秒間タッチして離すと、これは問題なく機能します。ただし、5 未満の場合は false を返します。ただし、MotionEvent はその下にある他のビューには渡されません。そのため、下にあるビューのすべてのボタンなどは「無効」になりました...
すぐに false を返すと、すべて正常に動作します...しかし、基になるボタンがトリガーされた場合、ACTION_UP はトリガーされなくなります。(論理的に思えますが、イベントは別の場所で処理されています)。
どうすればこれを修正できますか?