android中如何防止用户点击过快和防止同时点击多个控件

防止对单个控件的重复点击


方式一:

public final class AppUtils {
    private AppUtils() {

    }

    private static long mLastClickTime;// 用户判断多次点击的时间

    public static boolean isFastDoubleClick() {
        long time = System.currentTimeMillis();
        if (Math.abs(time - mLastClickTime) < 500) {
            return true;
        }
        mLastClickTime = time;
        return false;
    }
}

btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (AppUtils.isFastDoubleClick()){
                    // 进行点击事件后的逻辑操作
                }
            }
        });

方式二:新建一个onclicklistener

public abstract class OnMultiClickListener implements View.OnClickListener{
    // 两次点击按钮之间的点击间隔不能少于1000毫秒
    private static final int MIN_CLICK_DELAY_TIME = 1000;
    private static long lastClickTime;

    public abstract void onMultiClick(View v);

    @Override
    public void onClick(View v) {
        long curClickTime = System.currentTimeMillis();
        if((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {
            // 超过点击间隔后再将lastClickTime重置为当前点击时间
            lastClickTime = curClickTime;
            onMultiClick(v);
        }
    }
}
btn.setOnClickListener(new OnMultiClickListener() {
            @Override
            public void onMultiClick(View v) {
                // 进行点击事件后的逻辑操作
            }
        });



防止同时点击多个控件


方式一:

只要在xml文件中的父容器总加入这样一行代码即可:
android:splitMotionEvents=”false”
如在下面的LinearLayout中加入这行话,表示每一次只能点击LinearLayout其中的一个元素,点击了其他的元素是无效的。
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp10"
android:splitMotionEvents="false"
android:background="@drawable/shape_frame_black"

android:orientation="vertical" >


方式二:

<style name="MyStyle">

      <item name="android:windowEnableSplitTouch">false</item>

      <item name="android:splitMotionEvents>false</item>

</style>

这种方式就相当于全局设置了,可是有时候我们还是需要多点触控的,比如查看一张图片,我们需要放大看。



猜你喜欢

转载自blog.csdn.net/haoxuhong/article/details/80454921
今日推荐