2013-03-02 74 views
4

我已經做了一個應用程序,它在Ver 4.0以下的設備上運行得非常好,或者我們可以說ics,但是上面的它不能正常工作。 在我的應用程序中,我試圖同時在兩個按鈕上進行多點觸控,並且它在4.0以下版本中工作正常。 action_mask的值在觸摸和關閉觸摸時是6次方,而在4.0以上的版本中,其值爲1,2,0。 爲什麼這麼做?android-爲什麼不同的設備有不同的Action_mask值

enter code here 

@override 
public boolean ontouch(Event ev , MotionEvent event)  
{ 
    int actionResolved = event.getAction() & MotionEvent.ACTION_MASK; 
    int action = paramMotionEvent.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK; 
// int actionShift = paramMotionEvent.getAction() & MotionEvent.ACTION_POINTER_INDEX_SHIFT; 
    Log.i("fil", "action resolved" +actionResolved); 
    if(i==MotionEvent.ACTION_DOWN) 
    { 

     Log.i("fil", "action down"); 
     Log.i("fil", "action down value" +MotionEvent.ACTION_DOWN); 
    } 


    if(actionResolved == 5); 
    { 

     Log.i("fil", "action resolved" +actionResolved); 
     scannerview1.startAnimation(anim1); 
     scannerView2.startAnimation(anim1); 




    } 


    if(actionResolved ==6) 
      { 

      scannerView2.clearAnimation(); 
      scannerview1.clearAnimation();  
     } 


return true;   
} 
+0

只需使用枚舉常量,而不是,然後你不必擔心。例如MotionEvent.ACTION_POINTER_2_DOWN – Simon 2013-03-02 06:47:31

+1

實際上我正在使用action_mask值來執行一些特定的任務。因爲action_pointer_down沒有像文檔說的那樣工作。有沒有其他方法可以在不同的觸摸事件上執行不同的任務? – 2013-03-02 07:31:18

+0

然後請發佈您的代碼並準確描述它如何不按照文檔工作。我不喜歡猜謎遊戲。 – Simon 2013-03-02 07:59:01

回答

1

我已經在用行動指針向下IDS上述問題得到解決。 但是這個代碼不低於4.0版

可用這裏是我的代碼

@override 
public boolean ontouch(Event ev , MotionEvent event)  
{ 
    switch (event.getAction() & MotionEvent.ACTION_MASK) 
    {    
     case MotionEvent.ACTION_DOWN: 
      Log.i("D3", "pid" +event.getPointerId(0)); 
      //Log.i("D3", "pid" +event.getPointerId(1)); 
      if(event.getPointerId(0)==0){ 

      } 
      if(event.getPointerId(0)==1) 
      { 
       scannerview1.startAnimation(anim1); 
       scannerView2.startAnimation(anim1); 
      } 
      break; 
     case MotionEvent.ACTION_UP: 
      scannerView2.clearAnimation(); 
      scannerview1.clearAnimation(); 
      break; 
    } 
    return true; 
} 
0

而不是

if(actionResolved == 5); 

使用

if(actionResolved == ACTION_POINTER_1_DOWN); 

恆定值可能,並做API版本之間的變化。

另請注意,MotionEvent.ACTION_MASK已棄用。您應該使用'MotionEvent.ACTION_POINTER_INDEX_MASK'。

http://developer.android.com/reference/android/view/MotionEvent.html#ACTION_POINTER_INDEX_MASK

+1

ACTION_POINTER_1_DOWN已棄用,上述代碼在應用更改後無效。 – 2013-03-02 11:31:20

+0

我知道它已被棄用。如果你閱讀文檔,你會看到所有當前支持的常量。 – Simon 2013-03-02 14:21:38

相關問題