Closed10
Basics for System Back
Basics for System Back
「System back」 をより直感的に操作できることを目指す
- Android 13 は、ジェスチャーナビゲーションをより予測しやすく、使いやすいものにするために、数年にわたっての投資の始まり
- アフォーダンスを刷新して、システム全体で一貫した操作感を実現するために Haptic を改良する
今後2年間で、ユーザーに戻る体験の改善を提供する (0:47)
- 調査の結果、ユーザーが最も不満を感じるのは、「システムバック」で不意にランチャーに戻ってしまい、アプリケーションを再び開かざるを得なくなるケースだと分かった
- 最初にこの体験を改善するような API のアップデートを予定している
現在は「戻る」挙動が予測できない (1:15)
Ahead-of-time モデル
- Android 13 以降、アプリは Back イベントを処理するかどうかを事前にシステムに通知する必要がある
- System back をディスパッチするための Ahead-of-time モデル を導入
- これにより、システムはアプリケーションが「戻る」を処理するかどうかをジェスチャーを開始する前に事前に知ることが可能に
ユーザーが自分が何をしているかを事前に確認できる (2:38)
- アプリケーションが「戻る」を処理しない場合、システムはアプリの終了をプレビューし、ランチャーの背後にあるものを表示できる
- ユーザーは、スワイプしている途中でアプリを本当に閉じるのかどうかを決められる
新しいプラットフォームAPI
- Ahead-of-time モデルをサポートするために、
onBackInvokedCallback
API を導入する - インターフェイスには、
onBackInvoked
というメソッドが1つあり、Activity や Dialog からonBackPressed
メソッドの代わりに呼び出されるようになる
interface OnBackInvokedCallback (3:24)
- コールバックを登録するには、Activity または Dialog から
onBackInvokedDispatcher
を取得する必要がある - これを用いて「戻る」を処理したいことを事前にシステムに伝えることができる
- 「戻る」ときにコールバックが呼び出されて、システムはそれ以上何もしない
- 一方で、コールバックを提供しない/登録を解除すると、「戻る」をシステムが制御してアプリの終了をプレビューする
interface OnBackInvokedDispatcher (3:46)
Predictive back gesture を導入する
enableOnBackInvokedCallback
フラグを追加
Android Manifest に <application
android:enableOnBackInvokedCallback="true">
- Android Manifest の Application タブに明示的にフラグを追加する(4:38)
- オプトインするまでは全く影響を受けない
- Android 13 をターゲットにする前であってもオプトインして動作を確認できる
AndroidX Activity 1.6 にアップグレードする
- 新しいAPI は Activity 1.6 以上に上げると使用できる
- このアップデートでは、Android X のライブラリでは Navigation Component の使用を推奨している
- BackHandler やJetpack Compose は、Android 13 に即座に対応し、以前のバージョンのAndroidとの後方互換性を保つ
- これは AndroidX Activity が onBackPressedDispatcher API を先取りして提供していたおかげ
- onBackPressedDispatcher の挙動
- 以前のバージョンのAndroidをターゲットにしている場合は、Activity のonBackPressed を呼び出す
- Android 13以降では、新しいプラットフォーム API を呼び出す
追加で対応すべきこと
Custom back navigation を使用していないケース
- アプリが Custom back navigation を実装していない(システムに「戻る」処理を任せている)場合は、オプトインするだけでよい
Custom back navigation を使用しているケース
AndroidX back navigation (OnBackPressedDispatcher) を使用している場合
- Custom back navigation の方法として最も推奨している OnBackPressedDispatcher を使用している場合は、オプトインするだけでよい
カスタムビューのような低レベルなコンポートネントの場合
- プラットフォームAPI を直接使用する必要がある
- その場合のAPIの使用方法については、6:30~ を参照
- 例として Navigation Drawer レイアウトにプラットフォームAPIを統合する方法を紹介している
このスクラップは2022/06/14にクローズされました