2011-12-02 204 views
3

我使用ontouch事件,但問題IM有就是它召喚事件,但它是NT調用move事件或UP事件 檢查下面的代碼的Android onTouch監聽事件

public class DragNewActivity extends Activity implements OnTouchListener { 

    private float X; 
    private float Y; 
    private int width; 
    private int height; 
    private CharSequence s; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Log.d("D","D"); 

     TextView tv1 = (TextView)findViewById(R.id.tv1); 
     TextView tv2 = (TextView)findViewById(R.id.tv2); 
     tv1.setOnTouchListener(this); 
     //tv2.setOnTouchListener(this); 
     } 

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

     //int action = event.getAction(); 
     switch (event.getAction()){ 
     case MotionEvent.ACTION_DOWN: 
      Log.d("DOWN","DOWN"); 
     break; 

     case MotionEvent.ACTION_MOVE: 
      Log.d("MOVE","MOVE"); 
     break; 

     case MotionEvent.ACTION_UP: 
      Log.d("UP","UP"); 
      X = event.getRawX(); 
      Y = event.getRawY(); 

      Display display = getWindowManager().getDefaultDisplay(); 
      width=display.getWidth()/2; 
      height=display.getHeight()/2; 
      Log.e("X", X+""); 
      Log.e("Y", Y+""); 
      Log.e("ScX", width+""); 
      Log.e("ScY", height+""); 
      if(X>width && Y>height){ 
       Log.e("SUFI", "Event ho gyuaaaaaaa"); 
      } 

     break; 
     } 
     return false; 
    } 
} 

回答

7

無法返回ontouch回報假假真真所以它會聽下一運動事件

0

需要返回true,而不是返回false。

當你實現onTouch必須返回true

0

我知道這是有點老了,但我認爲這是實際上更準確地說,事件按順序發生:

向下 - >移動 - >向上。

對於每個事件至少調用一次「OnTouch」方法,並且在移動時多次調用onMove。

所以,如果你從向下返回false,它將不會移動到Move,然後向上。

如果您從向下返回true,它將繼續移動。如果移動返回false,它將不會移動到Up,依此類推。