防止对单个控件的重复点击
方式一:
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>
这种方式就相当于全局设置了,可是有时候我们还是需要多点触控的,比如查看一张图片,我们需要放大看。