In onTouchEvent, ACTION_UP doesn't work

泄露秘密 提交于 2019-11-27 23:34:34

问题


I'd like to read when a player touches the screen, and when not.

    @Override
public boolean onTouchEvent(MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_UP){  //ACTION UP
        actionOnUP = true;
        Log.v("MC", "Up");
    }
    if(event.getAction() == 0){ //ACTION DOWN
        actionOnUP = false;
        Log.v("MC", "Down");
    }
    Log.v("MC", event.getAction() + " ");
    return super.onTouchEvent(event);
}

This code, yes, it works, but only when player touch the screen (ACTION_DOWN), but when he don't touching the screen (ACTION_UP), nothing happens :/

^ This is screen form LogCat. You can see: this is only ACTION_DOWN, but nothing about ACTION_UP. Class is extending View:

public class MainClass extends SurfaceView implements SurfaceHolder.Callback {

Can you help me?

EDIT: My game is based on this tutorial: http://www.droidnova.com/2d-tutorial-series-part-v,848.html


回答1:


My guess is that super.onTouchEvent is returning false, as whatever superclass you're calling doesn't care about the touch event.

If you return false to onTouchEvent, then the Android OS will no longer notify you of any further events in that gesture. If you want to continue receiving touch event information (ACTION_UP for example), then you must return true to the first ACTION_DOWN event.




回答2:


"petey"'s solution worked for me ! Except some syntax errors, corrected here :

int code = event.getAction() & MotionEvent.ACTION_MASK;
if ((code == MotionEvent.ACTION_POINTER_UP) || (code == MotionEvent.ACTION_UP) || (code == MotionEvent.ACTION_CANCEL)) {

Thanks a lot.




回答3:


try :

int action = event.getAction();
int code = action & MotionEvent.ACTION_MASK;
if (code == MotionEvent.ACTION_POINTER_UP || code == MotionEvent.ACTION_UP || MotionEvent.ACTION_CANCEL) {


来源:https://stackoverflow.com/questions/12588263/in-ontouchevent-action-up-doesnt-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!