ปัญหามัลติทัช: เมื่อกดปุ่มสองปุ่มพร้อมกัน ระบบตรวจพบว่าฉันใช้นิ้วสัมผัสเพียงปุ่มเดียว เพราะเหตุใด

ฉันมีปุ่มสองปุ่มและอยากจะกดทั้งสองปุ่มพร้อมกัน ถ้าฉันกดอันแรกมันจะบันทึกตัว "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 ขึ้นอยู่กับว่านิ้วไหนชี้ก่อน มีข้อเสนอแนะอะไรบ้าง? อย่างไรก็ตาม ฉันยังไม่พบโปรเจ็กต์ตัวอย่างเปียโน แต่นั่นจะช่วยฉันได้อย่างแน่นอน หากวิธีนี้ไม่ได้ผลหรือแนวทางของฉันผิดโดยสิ้นเชิง มีผู้ใด?

ขอบคุณล่วงหน้า!


person Jani Bela    schedule 05.12.2012    source แหล่งที่มา


คำตอบ (1)


ฉันคิดว่า public boolean onInterceptTouchEvent (MotionEvent ev)คือสิ่งที่คุณกำลังมองหา ดูสิ่งนี้

person Markus Rubey    schedule 05.12.2012