2011-12-02 149 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,依此类推。