0

我正在写一个测验。我有四个按钮:回答选项,我正在使用Android 多点触控!破解任何人?禁用多点触控的代码片段。

但是这些按钮似乎只有在您快速点击它们时才起作用。

如果你慢慢按下按钮然后松开,按钮只会闪烁,没有任何反应。有人可以帮我弄清楚如何解决这个问题吗?

4

2 回答 2

0

I have used @JQCorreia hack and overrided his "onTouchEvent" like this:

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

That works for me.

于 2012-10-10T08:14:48.383 回答
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 回答