我正在编写一个关于ontouchevent的简单代码。代码是
class MyTouchListener implements View.OnTouchListener{
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==MotionEvent.ACTION_DOWN)
{ Log.i(TAG, "^^^^^^^^^^^ACTION DOWN^^^^^^^^^^^^");
}
else if(event.getAction()==MotionEvent.ACTION_UP)
{
Log.i(TAG, "^^^^^^^^^^^ACTION UP^^^^^^^^^^^^");
}
}
当我按下屏幕时,它会打印^^^^^ ACTION DOWN ^^^^^ 但是当我发布屏幕时它不打印^^^^^^ ACTION UP ^^^^^^ ....
表示MotionEvent.ACTION_UP失败..为什么会这样?
答案 0 :(得分:2)
尝试使用MotionEvent.ACTION_CANCEL
@Override
public boolean onTouch(final View view, final MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
setColorFilter(Color.argb(155, 185, 185, 185));
}
else if (motionEvent.getAction() == MotionEvent.ACTION_UP || motionEvent.getAction() == MotionEvent.ACTION_CANCEL) {
setColorFilter(Color.argb(0, 185, 185, 185));
}
return false;
}
或在ontouch方法中添加日志 Log.d(" tag"," motionEvent =" + motionEvent);
答案 1 :(得分:1)
好的ACTION_DOWN只会在动作移动发生后再发生一次并且在动作中... ...
但是有一个问题,例如,如果你有一个48dip x 48dip的可触摸区域,如果你触摸那个区域并将你的手指移开(拖动时)我的意思是你按下并将你的手指拖离可触摸区域比起行动不会发生!!!
只有在您使用更精细的屏幕但仍处于可触摸区域的情况下才会执行操作。我希望你理解我想说的话。
如果您想要触摸可触摸区域的鼠标,请不要将手指拉开并将手指从屏幕上移开,您知道就像录音一样,然后会发生上升事件