2

画面に 3 本の指が触れているときにアプリケーションを閉じたい (Mac OS のように)。私のアプリケーションでは、フラグメント化とビュー ページャーの両方を使用しましたが、event.getAction() とアクション マスクの使用方法がわかりません。

私は両方を使用しました

MotionEvent.ACTION_UP
MotionEvent.ACTION_POINTER_DOWN: 

しかし、それらは機能しません。

別の ACTION_MASKED アプリケーションを使用すると、複数回呼び出されます。

int maxPointercount=0;
int previousPointercount=0;

public boolean onTouch(View v, MotionEvent event) {
    int currentpointerCount = event.getPointerCount();
    System.out.println("My pointer....." + currentpointerCount);

    int action = event.getAction() & MotionEvent.ACTION_MASK;
    System.out.println("pre......."+previousPointercount);
    System.out.println("max......."+maxPointercount);

    if(maxPointercount < previousPointercount){
        maxPointercount = currentpointerCount;
    }

    previousPointercount = currentpointerCount;

    if(action==MotionEvent.ACTION_) {
       if(maxPointercount>=3){
        maxPointercount = 0;
        Toast.makeText(MyclassActivity.this,"FingerToched!!"Toast.LENGTH_SHORT).show();
        Intent intent = newIntent(MyclassActivity.this,DashboardActivity.class);
        startActivity(intent);
        finish();
        //your code that will run 1 time
       }
       maxPointercount = 0;
       previousPointercount = 0;      
    }
    return super.onTouchEvent(event);
}
4

1 に答える 1

4

これは機能するはずです。

    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        int currentpointerCount = event.getPointerCount();
        Log.d("hi", "My pointer....." + currentpointerCount);

        int action = event.getAction() & MotionEvent.ACTION_MASK;
        System.out.println("pre......."+previousPointercount);
        System.out.println("max......."+maxPointercount);

        if(maxPointercount < previousPointercount){
            maxPointercount = currentpointerCount;
        }

        previousPointercount = currentpointerCount;

        if(action==MotionEvent.ACTION_UP) {            
           if(maxPointercount==3){        
            finish();
            //your code that will run 1 time
           }
           maxPointercount = 0;
           previousPointercount = 0;      
        }
        return true;
        /** This worked for OP's specific case 
        return super.dispatchTouchEvent(event);
        **/
    }
于 2013-03-01T08:56:49.700 に答える