轉載請註明出處:http://www.cnblogs.com/cnwutianhao/p/6694072.html html
在作App的過程當中,當點擊某個按鈕的時候,若是不作連點處理,會形成按鈕在短期內被點擊屢次的狀況。android
爲了不這種狀況的發生,咱們須要自定義一個抽象類 CustomClickListener 並繼 View.OnClickListenerapp
abstract class CustomClickListener implements View.OnClickListener { private static final int MIN_CLICK_DELAY_TIME = 1000; // 設置1秒內只能點擊一次 private long lastClickTime = 0; private int id = -1; @Override public void onClick(View v) { long currentTime = Calendar.getInstance().getTimeInMillis(); int mId = v.getId(); if (id != mId) { id = mId; lastClickTime = currentTime; onNoDoubleClick(v); return; } if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) { lastClickTime = currentTime; onNoDoubleClick(v); } } protected abstract void onNoDoubleClick(View v); }
本文采用Data-Binding框架,So 在build.gradle(Module:app)下面添加框架
android {
...
dataBinding {
enabled = true
}
}
將連點處理寫入到須要實現的類裏面ide
public class MainActivity extends AppCompatActivity { private ActivityMainBinding mBinding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mBinding = DataBindingUtil.setContentView(this,R.layout.activity_main); mBinding.btn.setOnClickListener(new CustomClickListener() { @Override protected void onNoDoubleClick(View v) { // TODO:你想執行的操做 } }); } }
佈局文件佈局
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <RelativeLayout xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.tnnowu.android.perfectclick.MainActivity"> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </RelativeLayout> </layout>