Android听触摸发布

时间:2013-11-06 19:14:27

标签: java android ontouchevent ontouchlistener

我正在尝试听取触摸释放但事件没有被解雇。

这是我的代码:

public class MyView extends View {
    public MyView(final Context context) {
        super(context);
        setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent e) {
                if (e.getAction() == MotionEvent.ACTION_DOWN) {
                    makeToast("press", context);
                } else if (e.getAction() == MotionEvent.ACTION_UP || e.getAction() == MotionEvent.ACTION_CANCEL) {
                    makeToast("release", context);
                }

                return false;
            }
        });
    }

    void makeToast(String s, Context c) {
        CharSequence text = s;
        int duration = Toast.LENGTH_SHORT;

        Toast toast = Toast.makeText(c, text, duration);
        toast.show();
    }

}

活动类:

public class MyActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MyView v = new MyView(getApplicationContext());
        setContentView(v);
    }
}

当我触摸屏幕时,会出现一个带有“按下”的烤面包,但是当我释放触摸时,没有吐司出现,而我期待着一个写着“释放”的祝酒词出现。

我缺少什么?

1 个答案:

答案 0 :(得分:3)

您需要在onTouchListener中返回true而不是false。

首先触发Action Down但是你返回false意味着没有处理Action Down。

如果您返回true,它将确保完全处理它捕获的每个操作,只有当您知道处理操作所需的其他视图时才会返回false。

祝你好运!