Android onTouch Listener event



我正在使用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;
    /** 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;
    }
}

不返回false从ontouch返回true,以便它将监听下一个动作事件

你需要返回true而不是false。

当你实现onTouch时它必须返回true

我知道这有点老了,但我认为它实际上更准确地说,事件发生的顺序:

向下->移动->向上。

方法"OnTouch"在每个事件中至少被调用一次,而在onMove被移动时被多次调用。

所以,如果你从Down返回false,它不会移动到move,然后向上。

如果从Down返回true,它将继续移动。如果Move返回false,它将不会移动到Up,依此类推。

最新更新