Blog スタッフブログ

Android システム開発

[Android][Kotlin]ボタンの2度押し対策

システム開発担当のTFです。

※Android10対応(他バージョンの場合、細かい部分等が異なる事があります)

やり方

  • Viewに対して、拡張関数を用いて、2度押し対策をしたクリックリスナーを追加する
  • ボタンのクリック処理を登録したリスナーを使用する

参考

  【第38章】拡張関数について詳しく解説

サンプル

package test.test

import android.view.View

// 拡張関数
fun View.setOnSingleClickListener(listener: () -> Unit) {
    val delayMillis = 1000 // 二度押しを防止する時間
    var pushedAt = 0L
    setOnClickListener {
        if (System.currentTimeMillis() - pushedAt < delayMillis) return@setOnClickListener
        pushedAt = System.currentTimeMillis()
        listener()
    }
}
class MainActivity : AppCompatActivity() {
	
	override fun onCreate(savedInstanceState: Bundle?) {
		// 省略
		
		// 追加した2度押し対策をしたクリックリスナーの利用
		binding.loginButton.setOnSingleClickListener {
			// ボタンを押した際の処理
		}
		
	}
}