連點處理,禁止按鈕在短期內被屢次點擊

轉載請註明出處: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>
相關文章
相關標籤/搜索