連點處理,禁止按鈕在短時間內被多次點擊


轉載請注明出處:http://www.cnblogs.com/cnwutianhao/p/6694072.html 

 

在做App的過程中,當點擊某個按鈕的時候,如果不做連點處理,會造成按鈕在短時間內被點擊多次的情況。

為了避免這種情況的發生,我們需要自定義一個抽象類 CustomClickListener 並繼 View.OnClickListener

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
    }
}

 

將連點處理寫入到需要實現的類里面

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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM