私のビデオ再生アプリでは、このフラグを使用しSYSTEM_UI_FLAG_HIDE_NAVIGATION
てナビゲーションバーを非表示にしますが、画面にタッチするとナビゲーションバーが表示され、最初のタッチ後にタッチイベントやその他のイベントが正常に機能します。
私の質問は、どうすれば最初のタッチを引き継ぐことができるかということです。
私のビデオ再生アプリでは、このフラグを使用しSYSTEM_UI_FLAG_HIDE_NAVIGATION
てナビゲーションバーを非表示にしますが、画面にタッチするとナビゲーションバーが表示され、最初のタッチ後にタッチイベントやその他のイベントが正常に機能します。
私の質問は、どうすれば最初のタッチを引き継ぐことができるかということです。
最初のイベントを実際に引き継ぐことはできません。View.OnSystemUiVisibilityChangeListenerを実装して、ナビゲーションバーが再び表示または非表示になったときに通知を受け取り、現在の状態に応じて、可能であれば最初のタッチで必要な操作を実行できます。
ただし、 SYSTEM_UI_FLAG_HIDE_NAVIGATIONのドキュメントに記載されているように、最初のタッチを完全に引き継ぐ方法はありません。
制限があります。ナビゲーションコントロールは非常に重要であるため、ユーザーの操作が最も少ないと、すぐに再表示されます。これが発生すると、このフラグとSYSTEM_UI_FLAG_FULLSCREENの両方が自動的にクリアされるため、両方の要素が同時に再表示されます。
この投稿に出くわした人のために、ナビゲーション/ステータスバーを非表示にし、画面に触れたときに元に戻らないようにする場合は、https://developerで説明されているさまざまな「没入型」構成を確認してください。 .android.com / training / system-ui / immersive
例えば:
currentActivity?.window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
View.SYSTEM_UI_FLAG_FULLSCREEN or
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
これにより、ユーザーが画面を操作したかどうかに関係なく、画面が効果的に「フルスクリーン」モードになります。
ナビゲーション/ステータスバーを再度表示するには、次のように変更します。
currentActivity?.window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE