1

所以我有两个按钮,想同时按下。如果我按下第一个它会记录一个“C”(作为钢琴音符),另一个记录一个 D。

至今:

@Override
     public boolean onTouch(View v, MotionEvent event) {

        int action = event.getActionMasked();

        switch (event.getAction() & MotionEvent.ACTION_MASK){

        case MotionEvent.ACTION_DOWN:
             switch (v.getId()) { 
                case R.id.cnotebutton: 
                    Log.i("C", "C1");
                    return true;
                case R.id.c2notebutton: 
                      Log.i("D", "D1");
                      return true;
                default:
                }

                break;
            case MotionEvent.ACTION_UP:

                break;  
            case MotionEvent.ACTION_POINTER_DOWN:

                break;
            case MotionEvent.ACTION_POINTER_UP:

                switch (v.getId()) { 
                    case R.id.cnotebutton:
                        Log.i("C", "C2");
                        return true;
                    case R.id.c2notebutton: 
                          Log.i("D", "D2");
                          return true;
                    default:
                    }
                break;
            case MotionEvent.ACTION_MOVE:

                break;
            default:

        }
        return true;
    }

我记录 C1 和 C2 以区分情况,但每次按下按钮时,我只得到 C1、C2 或 D1、D2,就好像我用两根手指触摸了相同的按钮一样。我应该得到 C1,D2 或 D1,C2 取决于哪个手指先指向。有什么建议么?无论如何,我还没有找到一个钢琴样本项目,但是如果这不起作用或者我的方法完全错误,那肯定会帮助我。有没有?

提前致谢!

4

1 回答 1

0

我想public boolean onInterceptTouchEvent (MotionEvent ev)这就是你要找的。看看这个。

于 2012-12-05T12:48:48.693 回答