【问题标题】:Multiple button presses for Android 2.x适用于 Android 2.x 的多个按钮按下
【发布时间】:2011-02-01 11:00:24
【问题描述】:

我对此还是比较陌生,我一直在开发一个小应用程序,该应用程序将极大地受益于用户一次按下 2 个按钮。实现这一目标的最佳方法是什么?我不认为 OnClickListener 可以那样工作,并且我已经看到了使用 OnTouch 事件执行此操作的示例。但是,我不知道如何使用 OnTouch 事件设置按钮按下。

【问题讨论】:

    标签: android multi-touch


    【解决方案1】:

    您必须自己处理触摸事件。使用多指针(又名多点触控)API,这很容易。只需覆盖 onTouchEvent() 方法或在按钮上注册一个 OnTouchListener。

    【讨论】:

    • 非常感谢您提供的信息。我遇到的唯一问题是如何为多个按钮实现 OnTouchListener。我要为每个人设置一个 OnTouchListener 吗?或者我可以设置一个监听器,并使用 switch 语句,如 switch(v.getId()) R.id.button1:..... R.id.button2:......
    • nm,我想通了 :) 再次感谢!
    • 顺便说一句,Romain - 如果您是来自 Google 的“Romain Guy”,您能否尝试在 Stack Overflow 上坚持使用一个帐户?您似乎使用了多达 5 个帐户,其中大部分是新帐户且声誉较低。这使得人们很难知道他们得到的答案是“官方的”并且非常可靠,还是只是碰巧与 Google 的那个人同名(没有双关语)的人的意见。
    • 好的,这就是我目前所拥有的。我为每个按钮设置了一个 OnTouchListener,这里是事件的代码:pastebin.com/10RyhKx0 按钮操作得很好,我一次不能点击超过 1 个
    • Steve H.,我是 Romain Guy,但当我尝试使用现有帐户登录时,StackOverflow 太烦人了 :)
    【解决方案2】:
    @Override
    public boolean onTouchEvent (MotionEvent event) {
        if (event.getAction()==MotionEvent.ACTION_UP) {
            // reset all buttons
            ...
        }
        else {
            int count=event.getPointerCount(),vx1=-1,vy1=-1,vx2=-1,vy2=-1;
            if (count>=1) {
                vx1=(int)event.getX(0);
                vy1=(int)event.getY(0);
            }
            if (count>=2) {
                vx2=(int)event.getX(1);
                vy2=(int)event.getY(1);
            }
            ...
        }
        return true;
    }
    

    【讨论】:

    • probly Lohoris biquillo 所说的是您的示例仅显示坐标,但没有显示如何在这些坐标下获取按钮。当您收到带有多个指向调用 onTouchEvent(View view, MotionEvent) 的指针的 MotionEvent 时,视图是两个按钮之一
    猜你喜欢
    • 2015-06-26
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 2012-04-27
    相关资源
    最近更新 更多