【问题标题】:Android button onclick multitouchAndroid 按钮 onclick 多点触控
【发布时间】:2013-03-04 08:30:11
【问题描述】:

我有 2 个按钮,当第一次按下 now 和 v.v. 时,我需要从第二个按钮读取 onClick 事件。就像在键盘中一样。怎么做?

  • 编辑

不,不!我不需要检查 第一个按钮是否被点击。当第一个或第二个按钮处于 ACTION_DOWN 状态时,我需要监听另一个 onClick 事件,因为如果我按下第一个按钮,我不能按第二个,但我有多点触控。

【问题讨论】:

  • 那些是切换按钮吗?
  • 类似于 ctrl+C 的键盘快捷键?
  • 目的是什么?您的问题似乎不完整。
  • 不,它不是一个切换按钮。我想同时监听两个(或三个)按钮的 onClick 事件。

标签: android onclick multi-touch


【解决方案1】:

也许你可以试试下面的代码:

在类中声明一个布尔变量。

private boolean button1IsPressed = false;

为按钮 1 编写以下代码:

button1.setOnTouchListener(new OnTouchListener() {
     @Override
     public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN) {
           button1IsPressed=true;
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
           button1IsPressed=false;
        }
     }
  };

对于按钮 2,您可以执行以下操作:

button2.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if(button1IsPressed){
                  //Write your to do code here
            }
        }
    });

【讨论】:

  • 如果你想识别两个触摸,可能你必须为布局实现 ontouchlistener 并检查来自motionEvent对象的坐标是否在按钮边界内,如果是则处理事件..跨度>
【解决方案2】:

你可以试试onTouchListeners。在第一个按钮中修改一个布尔值对 down 和 up 事件,在第二个按钮中,只有当布尔值为 true 时才执行一个动作。

【讨论】:

    【解决方案3】:

    如果按钮是切换按钮,我认为是这样的:

    public void onToggleClicked(View view) {
        // Is the toggle on?
        boolean on = ((ToggleButton) view).isChecked();
    
        if (on) {
            // Do something
        } else {
            // Disable vibrate
        }
    }
    

    这里主要是isChecked()函数,它可以在检查哪个被检查时使用,然后执行一些东西。您可以在两个按钮的 XML 中设置如下:

    android:onClick="onToggleClicked" 然后用 isChecked 确定检查哪个是这样的:

     boolean on1 = ((ToggleButton) view1).isChecked();
     boolean on2 = ((ToggleButton) view2).isChecked();
    
    if (on1)
      //do something with button2
    if (on2)
      //do something with button1
    

    干杯

    【讨论】:

      【解决方案4】:

      在 android-16/ApiDemos 项目中有一个示例代码,名为“Views -> Splitting Touches across Views”(SplitTouchView.java)。在那个包含LinearLayout 的示例中,有一个属性android:splitMotionEvents="true" 允许同时滚动两个列表视图。

      根据Android 3.0 API Overview这个属性出现在这个api版本中:

      以前,一次只有一个视图可以接受触摸事件。 Android 3.0 增加了对跨视图甚至窗口拆分触摸事件的支持,因此不同的视图可以同时接受触摸事件。

      【讨论】:

        猜你喜欢
        • 2011-07-17
        • 1970-01-01
        • 1970-01-01
        • 2016-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-11
        • 1970-01-01
        相关资源
        最近更新 更多