はじめに
Android10がリリースされてバックキーが無くなり、エッジをスワイプすることでバックキーと同じ動作が可能になりました。
本稿ではエッジをスワイプし自前のUIを動かしたい時にバックの挙動を無効にする方法を紹介します。
実装
sampleFragment.kt
//バックの挙動を無効にしたいView
val view: View = findViewById(R.id.view)
//対象のViewのバックを無効にしたい範囲
val rect = Rect(0, 0, 100, 100)
//バック動作無効の設定
view.systemGestureExclusionRects = listOf(rect)
Android10から追加されたsetSystemGestureExclusionRects()メソッドをViewに対して設定します。
Viewの中で無効にしたい範囲(例だとViewの左上から縦横100px)を定義して引数とします。
この時Rectはlistで渡すので複数の範囲を指定することができます。
以上、この実装により指定したViewの範囲ではスワイプバックの挙動が無効になり自前で実装したジェスチャーが動きます。