在Android开发中,经常遇到重复多次点击按钮,导致界面跳转的时候,弹窗多个相同的界面,这样很影响用户体验,那么,我们应该怎么处理比较好呢?
其实处理这个问题非常简单,直接上代码吧
先写一个工具类
public class Utils {
private final static long DEFAULT_TIME = 1000;
public static boolean isInvalidClick(@NonNull View target) {
return isInvalidClick(target, DEFAULT_TIME);
}
/**
* @param target 防止多次点击的View
* @param defaultTime 超时时间
* @return
*/
public static boolean isInvalidClick(@NonNull View target, @IntRange(from = 0) long defaultTime) {
long curTimeStamp = System.currentTimeMillis();
long lastClickTimeStamp = 0;
Object o = target.getTag(R.id.invalid_click);
if (o == null) {
target.setTag(R.id.invalid_click, curTimeStamp);
return false;
}
lastClickTimeStamp = (Long) o;
boolean isInvalid = curTimeStamp - lastClickTimeStamp < defaultTime;
if (!isInvalid)
target.setTag(R.id.invalid_click, curTimeStamp);
return isInvalid;
}
}
在values
下,新建一个ids.xml
<resources>
<item name="invalid_click" type="id" />
</resources>
然后就可以使用了
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Utils.isInvalidClick(v, 5000))
return;
Toast.makeText(MainActivity.this, "hello world!", Toast.LENGTH_SHORT).show();
}
});