重寫OnClickListener
public abstract class DebouncingOnClickListener implements View.OnClickListener {
private static boolean enabled = true;
private static final Runnable ENABLE_AGAIN = new Runnable() {
@Override
public void run() {
enabled = true;
}
};
@Override
public final void onClick(View v) {
if (enabled) {
enabled = false;
v.post(ENABLE_AGAIN);
doClick(v);
}
}
public abstract void doClick(View v);
}
模擬點(diǎn)擊
txt = (TextView) findViewById(R.id.txt);
/*txt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MainActivity.this, SecondActivity.class));
}
});*/
txt.setOnClickListener(new DebouncingOnClickListener() {
@Override
public void doClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent(MainActivity.this, SecondActivity.class));
}
});
for (int i = 0; i < 3; i++) {
txt.performClick();
}
使用系統(tǒng)自帶的OnClickListener會打開三次SecondActivity,使用DebouncingOnClickListener 則只會打開一次。