我正在尝试听取触摸释放但事件没有被解雇。
这是我的代码:
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);
}
}
当我触摸屏幕时,会出现一个带有“按下”的烤面包,但是当我释放触摸时,没有吐司出现,而我期待着一个写着“释放”的祝酒词出现。
我缺少什么?
答案 0 :(得分:3)
您需要在onTouchListener中返回true而不是false。
首先触发Action Down但是你返回false意味着没有处理Action Down。
如果您返回true,它将确保完全处理它捕获的每个操作,只有当您知道处理操作所需的其他视图时才会返回false。
祝你好运!