Android onTouch侦听器事件
我正在使用ontouch事件,但我遇到的问题是它调用down事件,而不是调用move事件或UP事件 检查以下代码Android onTouch侦听器事件,android,Android,我正在使用ontouch事件,但我遇到的问题是它调用down事件,而不是调用move事件或UP事件 检查以下代码 public class DragNewActivity extends Activity implements OnTouchListener { private float X; private float Y; private int width; private int height; private CharSequence s;
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;
}
}
您需要返回true而不是false
当您实现onTouch时,它必须为return true不要从onTouch return true返回false,这样它将侦听下一个运动事件我知道这有点陈旧,但我认为更准确的说法是,事件按顺序发生: 向下->移动->向上 方法“OnTouch”对于每个事件至少调用一次,对于正在移动的onMove则调用多次 所以,如果从下返回false,它将不会继续移动,然后再向上移动 如果从“向下”返回true,它将继续移动。如果Move返回false,它将不会继续向上移动,依此类推