名稱: 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();
}
此類可以統計你點擊事件。