多点触控不适用于Android

时间:2012-11-20 13:01:00

标签: android event-handling touch

我的touchlistener出了问题,实际上没有让它正常工作。

    @Override
public boolean onTouchEvent(MotionEvent event) {

    touchControll.processTouchEvent(event); //should do everything!
    invalidate();
    return true; 
}

Methode processTouchevent只需将事件监视器放在原处并处理它。 因此,如果触摸在Joypad内部,它会处理游戏手柄“动作”。但如果我现在想要处理一个hitButton事件,它就不会做出反应。

示例

    public void processHitButtonTouch(MotionEvent event){
    int touchPosX = (int) event.getX();
    int touchPosY = (int) event.getY();
    if(event.getAction() == MotionEvent.ACTION_DOWN)
        if(touchPosX > Config.BLOCKSIZE*37 && touchPosY > Config.BLOCKSIZE*3 && touchPosY < Config.BLOCKSIZE*7){
            this.hitButton.buttonStatus = Pressed.PRESSED;
        }
    }

在每个MotionEvent.ACTION_UP上我重置了这样的全部内容:

    if(event.getAction() == MotionEvent.ACTION_UP){
        joyPad.status = Status.IDLE;
        charac.setStatus(Status.IDLE);
        this.hitButton.buttonStatus = Pressed.UNPRESSED;
    }

如果它实际上使用Loggincat处理多于1个事件,我就会绑定它(2次触摸2次登录!)。但它根本不像我在这里做的那样工作。 我做错了什么?!

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

Android中只有一个视图可以捕获触摸事件,因此如果你的hitButton没有做出反应而你的手指放在Joypad上,那么这是正常的。

要使用多点触控,您必须实现一个包含所有按钮的全局视图(joypad,hitbutton ...)。因此,此视图捕获事件并将其传递给joypad的touchEventListener或hitButton的侦听器。

编辑:这里有一个带2个操纵杆的例子

http://code.google.com/p/mobile-anarchy-widgets/source/browse/trunk/Widgets/src/com/MobileAnarchy/Android/Widgets/Joystick/DualJoystickView.java?r=30

Edit2:一个很好的教程

http://android-developers.blogspot.fr/2010/06/making-sense-of-multitouch.html