Skip to content

LeoAndo/android13-back-gesture-samples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 

Repository files navigation

開発環境

Android Studio Iguana

android13-back-gesture-samples

Sample for Back Gesture (Android 13+)

開発メモ

OS13で、戻るジェスチャーを使いたい場合は開発者オプションの設定が必要。
詳しくは、ここ参照する。
それより古いOSは戻るジェスチャーは使えない。Jetpack API側で従来のキーイベント処理を行ってくれる。

スクリーンショット 2022-11-26 20 43 04

LifecycleOwnerを引数に取るOnBackPressedDispatcher#addCallbackを使用すれば、画面のライフサイクルの終了タイミングで解放処理を行ってくれるのでメモリリークを防げる。

https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:activity/activity/src/main/java/androidx/activity/OnBackPressedDispatcher.java;l=313?q=OnBackPressedDispatcher&ss=androidx%2Fplatform%2Fframeworks%2Fsupport&hl=ja

       @Override
        public void cancel() {
            mLifecycle.removeObserver(this);
            mOnBackPressedCallback.removeCancellable(this);
            if (mCurrentCancellable != null) {
                mCurrentCancellable.cancel();
                mCurrentCancellable = null;
            }
        }

Jetpack Composeの場合は、BackHandlerを使う。こちらに関しては、com.google.accompanist.web.WebViewを使用していれば内部でBackHandlerを使っているので、開発者が対応する必要はない。 https://github.com/google/accompanist/blob/7a293b358c293d398a9b95185b41ef3cc1136475/web/src/main/java/com/google/accompanist/web/WebView.kt#L84:L86

    BackHandler(captureBackPresses && navigator.canGoBack) {
        webView?.goBack()
    }

com.google.accompanist.web.WebViewの使い方は以下のサンプルコードを参考にする。
https://github.com/google/accompanist/blob/a0ebf63b2bb5d681fd5c2c6bb6c2e97022b1b296/sample/src/main/java/com/google/accompanist/sample/webview/BasicWebViewSample.kt

Capture OS: 13

バックキー 戻るジェスチャー

Capture OS: 8

バックキー 戻るジェスチャー
利用不可能

refs

LeoAndo/development-conference-memo#161
LeoAndo/development-conference-memo#81
https://developer.android.com/guide/navigation/predictive-back-gesture?hl=ja
https://codelabs.developers.google.com/handling-gesture-back-navigation?hl=ja#0
Jetpack ComposeのBackHandlerを使ったサンプル

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Languages