Android 防止同时按下两个按钮触发两个事件,连续点击事件

 不知道大家在写程序的时候有没有遇到这种问题,解决的办法很简单。

 1. 在这两个按钮 或其他控件 的父控件上加上
    android:splitMotionEvents="false" 是否允许多点触控
 2. 在style中配置
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- 防止同时按下两个按钮 -->
    <item name="android:windowEnableSplitTouch">false</item>
    <item name="android:splitMotionEvents">false</item>
</style>
3. 在代码中配置
/**
 * @param event
 * @return 避免同时按两个按钮
 */
@Override
public boolean onTouchEvent(MotionEvent event) {

    if (event.getPointerCount() == 2) {
        Log.i("两个按钮同时按","获得两点的坐标,此时禁止点击事件传递");
        //true,则拦截所有点击事件,按钮的点击事件不会被执行
        return true;
    }
    return false;
}
4. 在2个Button的父布局中加入:android:splitMotionEvents=”false”//不支持多点触控事件

   防止按钮连续点击:
           我们会遇到这样连续不断的点击会出现一直在运行按钮的方法。这样是有问题的,我的解决办法是新建了一个类,调用这个方法就ok了。

           

public class Utils {

    // 两次点击按钮之间的点击间隔不能少于1000毫秒
    private static final int MIN_CLICK_DELAY_TIME = 500;
    private static long lastClickTime;

    public static boolean isFastClick() {
        boolean flag = false;
        long curClickTime = System.currentTimeMillis();
        if ((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {
            flag = true;
        }
        lastClickTime = curClickTime;
        return flag;
    }
}

调用:

btnDown = (Button)findViewById(R.id.btnDown);
btnDown.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                if(Utils.isFastClick()) {
                    sendMsg("btnDown", so, isa);
                }
            }
        }).start();
    }
});
--------------------- 
作者:Evloution_ 
来源:CSDN 
原文:https://blog.csdn.net/EvloutionPLUS/article/details/80541022 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

Android:禁用全局多点触控

 

在application引用的Theme中添加以下代码:
<item name="android:windowEnableSplitTouch">false</item>
        <item name="android:splitMotionEvents">false</item>

可以禁用全局多点触控,如果要单独弄,则在需要的xml添加

下面是示例源码

  1. <!-- 应用所有界面样式,无标题栏,禁用多点触控 -->  
  2.     <style name="App_NoTitleBar" parent="android:Theme">  
  3.         <item name="android:windowNoTitle">true</item>  
  4.         <item name="android:windowEnableSplitTouch">false</item>  
  5.         <item name="android:splitMotionEvents">false</item>  
  6.     </style>  
  7. <!-- 应用所有界面样式,无标题栏,禁用多点触控 -->  
  8.     <style name="App_NoTitleBar" parent="android:Theme">  
  9.         <item name="android:windowNoTitle">true</item>  
  10.         <item name="android:windowEnableSplitTouch">false</item>  
  11.         <item name="android:splitMotionEvents">false</item>  
  12.     </style>  

android -布局控件禁用多点触控

只需要在外面Layout中设置

[html] view plain copy

  1. android:splitMotionEvents="false"  

这个属性,就可以完美解决这个问题.

参考文章:

http://blog.csdn.net/aikongmeng/article/details/42238285

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值