您的位置:首页 > 其它

安卓实战中防止Button的频繁点击多次执行点击事件和点击切换文字

2016-07-18 18:10 411 查看
哈哈,今天来写两种button在安卓开发实战的对应效果处理,也是对button的点击事件触发过程的处理。

开发实战中button事件处理3种情况:

情况一:button点击触发倒计时
情况二:button频繁点击(特别是触发网络请求),本人公司是金融公司很容易产生两笔交易的情况
情况三:button点击时不断轮流切换文字
看效果:



情况一:button触发倒计时

请移步我的:频繁点击
安卓CountDownTimer实现全民夺宝抢购倒计时和短信验证码倒计时

情况二:

用户非常快的双击按钮 按钮事件相当于二次

怎么控制一个Button俩次点击的时间大于2s

每次点击事件执行之前 先判断俩次点击间隔是否大于2000毫秒

package com.losileeya.buttonclick;

import android.view.View;

/**
 * User: Losileeya (847457332@qq.com)
 * Date: 2016-05-21
 * Time: 20:22
 * 类描述:
 *
 * @version :
 */
public abstract class OnClickEvent implements View.OnClickListener {

    private static long lastTime;

    public abstract void singleClick(View v);
    private long delay;

    public OnClickEvent(long delay) {
        this.delay = delay;
    }

    @Override
    public void onClick(View v) {
        if (onMoreClick(v)) {
            return;
        }
        singleClick(v);
    }

    public boolean onMoreClick(View v) {
        boolean flag = false;
        long time = System.currentTimeMillis() - lastTime;
        if (time < delay) {
            flag = true;
        }
        lastTime = System.currentTimeMillis();
        return flag;
    }
}
上面是对点击事件进行处理:

具体使用:

singleClick.setOnClickListener(new OnClickEvent(delayTime) {
            @Override
            public void singleClick(View v) {
                Snackbar.make(v,"防止重复点击额",Snackbar.LENGTH_SHORT).show();

            }
        });


情况三:点击button来回切换文字

上述的情况比如淘宝的购物车里面就有出现,我这里也是以
*完成/编辑

来回切换的。

package com.losileeya.buttonclick;

import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.single_click)
    Button singleClick;
    @BindView(R.id.change_click)
    Button changeClick;
    //通过标志来动态显示文字
    private int flag=0;
    //延迟时间
    private  int delayTime=2000;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        doEvent();
    }

    private void doEvent() {
        singleClick.setOnClickListener(new OnClickEvent(delayTime) {             @Override             public void singleClick(View v) {                 Snackbar.make(v,"防止重复点击额",Snackbar.LENGTH_SHORT).show();             }         });
        changeClick.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                flag = (flag + 1) % 2;//点击然后改变flag的值
                changeClick.setText(flag >0?"编辑":"完成");
            }
        });
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Button