自定义可统计、防止快速点击的button

名称: MonitorFuncCButton (可统计的button)

最近遇见了一个需求,要求我快速点击button时,只响应一次事件,后面的点击均无效,并且还可以统计到你点击的button的具体位置。

/**
 * Created by cz123 on 2018/11/8.
 */

public class MonitorFuncCButton extends Button {
    private int monitor_id = 0;   //button -- 位置身份标识
    private String monitor_name;   //MonitorFuncCButton -- 自身身份命名
    public final int KEY_ID= 525;  //设置monitorId
    public int times;

    public MonitorFuncCButton(Context context) {
        super(context,null);
    }

    public MonitorFuncCButton(Context context, AttributeSet attrs) {
        super(context, attrs,0);
    }

    public MonitorFuncCButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);

    }

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();
        initId();
    }

    private void initId() {
        if(getId() >0){
            monitor_id = getId();
        }else if (getTag(KEY_ID)!=null){
            if(getTag(KEY_ID) instanceof Integer){
                monitor_id = (int) getTag(KEY_ID);
            }
        }
    }

    public void setMonitor_id(int monitor_id){
        this.monitor_id = monitor_id;
    }

    public void setMonitor_name(String monitor_name){
        this.monitor_name = monitor_name;
    }



    /**
     *  点击统计
     */
    public void clickStatistics() {
        times++;
        Toast.makeText(getContext(),"点击次数:"+times,Toast.LENGTH_SHORT).show();
    }

	
}

在clickStatistics的函数中,是负责你button点击的统计,可以将button传递到后台,以此统计你的点击位置。

/**
 * Created by cz123 on 2018/11/8.
 */

public abstract class OnFastClickListener implements View.OnClickListener {
    private long last_time = 0;
    private long limit_time = 2000L;
    @Override
    public void onClick(View v) {
        long time = System.currentTimeMillis();
        if(time-last_time>limit_time){
            onFastClick(v);
            if(v instanceof MonitorFuncCButton){
                ((MonitorFuncCButton)v).clickStatistics();
            }
            last_time = time;
        }

    }
    public abstract void  onFastClick(View v);
}

此类可以设置点击最小间隔时间,实现onFastClick(View v),处理你的点击事件,并且每次点击会自动统计。

public  abstract  class OnMonitorClickListener implements View.OnClickListener {

    @Override
    public void onClick(View v) {
        if(v instanceof MonitorFuncCButton){
            ((MonitorFuncCButton)v).clickStatistics();
        }
        onMonitorClick();
    }

    /**
     * 可统计的点击方法
     */
    public abstract void onMonitorClick();
}

此类可以统计你点击事件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值