クイズを書いています。私には4つのボタンがあります:回答オプション、そして私はAndroidマルチタッチを使用しています!誰かをハックしますか?マルチタッチを無効にするコードスニペット。
ただし、ボタンはすばやくタップした場合にのみ機能するようです。
ボタンをゆっくり押してから離すと、ボタンが点滅するだけで何も起こりません。誰かがこれを修正する方法を理解するのを手伝ってもらえますか?
クイズを書いています。私には4つのボタンがあります:回答オプション、そして私はAndroidマルチタッチを使用しています!誰かをハックしますか?マルチタッチを無効にするコードスニペット。
ただし、ボタンはすばやくタップした場合にのみ機能するようです。
ボタンをゆっくり押してから離すと、ボタンが点滅するだけで何も起こりません。誰かがこれを修正する方法を理解するのを手伝ってもらえますか?
これが機能する可能性のあるコードです。試してみる時間がなかったことに注意してください。
private static final String sClickKey = "clickkey";
private boolean mClicked;
@Override
public void onClick(View view) {
synchronized (sClickKey){
if (!mClicked){
mClicked = true;
/* do the rest here... */
}
}
}
を使用synchronize
すると、最初にタップしたボタンのみがに入力されif(!mClicked)
、その後、mClicked
値がに変更されtrue
、次のイベントがifステートメントに渡されなくなります。
これがお役に立てば幸いです。;)
私は@JQCorreiaハックを使用し、次のように彼の「onTouchEvent」をオーバーライドしました。
@Override
public boolean onTouchEvent(MotionEvent event){
int action = event.getAction() & MotionEvent.ACTION_MASK;
switch (action) {
case MotionEvent.ACTION_DOWN:
for(View v: views){
Rect r = new Rect();
v.getGlobalVisibleRect(r);
if (event.getX() > r.left && event.getX() < r.right
&& event.getY() > r.top
&& event.getY() < r.bottom) {
v.onTouchEvent(event);
}
}
break;
case MotionEvent.ACTION_UP:
for(View v: views){
Rect r = new Rect();
v.getGlobalVisibleRect(r);
if (event.getX() > r.left && event.getX() < r.right
&& event.getY() > r.top
&& event.getY() < r.bottom) {
v.onTouchEvent(event);
}
}
break;
case MotionEvent.ACTION_MOVE:
for(View v: views){
Rect r = new Rect();
v.getGlobalVisibleRect(r);
if (event.getX() > r.left && event.getX() < r.right
&& event.getY() > r.top
&& event.getY() < r.bottom) {
}
else{
v.onTouchEvent(event);
}
}
break;
}
return true;
}
それは私にとってはうまくいきます。