0

クイズを書いています。私には4つのボタンがあります:回答オプション、そして私はAndroidマルチタッチを使用しています!誰かをハックしますか?マルチタッチを無効にするコードスニペット。

ただし、ボタンはすばやくタップした場合にのみ機能するようです。

ボタンをゆっくり押してから離すと、ボタンが点滅するだけで何も起こりません。誰かがこれを修正する方法を理解するのを手伝ってもらえますか?

4

2 に答える 2

0

これが機能する可能性のあるコードです。試してみる時間がなかったことに注意してください。

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ステートメントに渡されなくなります。

これがお役に立てば幸いです。;)

于 2012-10-04T05:58:55.073 に答える
0

私は@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;
    }

それは私にとってはうまくいきます。

于 2012-10-10T08:14:48.383 に答える