4

Android 防止过快点击

 3 years ago
source link: http://www.androidchina.net/8627.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Android 防止过快点击 – Android开发中文站

在用户使用 Android 应用的时候,经常会出现过快且多次点击同一按钮的情况,一方面这是因为应用或手机当前有些卡顿,另一方面也可能是由于很多应用并没有设置按钮点击时的 selector 或者其它按钮响应方式(例如点击按钮时按钮放大,常见于游戏),导致用户误认为没有点击到当前按钮,当然,除了相对应的对应用进行优化和设置点击selector以外,我们还可以做一些其它的工作,例如,判断按钮的 onClick 事件在规定事件段内只响应一次(在论坛的搜索功能中,我们常见到每10秒才可以进行一次搜索的设置,这就在一定程度上减少了无效的网络访问量,减轻服务器压力,APP同理),就如下面代码所示:

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) {
                // 进行点击事件后的逻辑操作
            }
        });

转载请注明:Android开发中文站 » Android 防止过快点击


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK