問題タブ [android-navigation-bar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android AccessibilityService でステータス バー、ナビゲーション バー、画面の寸法を見つける方法
Java アプリ (API 23) があります。その中に と がMainActivity
ありAccessibilityService
ます。AccessibilityService では:
を調整する必要があるのでwidth
、ステータス バーとナビゲーション バーを含む画面全体をカバーします。つまり、ステータス バー、画面、およびナビゲーション バーのサイズを見つける必要があります (必要な値を取得したら、必要な値を計算できます)。height
xPos
yPos
ステータスバーの高さを見つけましたか? - 最良の答えは
しかしrootView
、アクティビティが表示される保証はないので、何を使用できますか? そして、ビューの作成onServiceConnected()
を内部から移動する必要がありonApplyWindowInsets()
ますか?
これは本当にこれを行うための最良の方法ですか?
上記について心に留めておくべきフォローアップの質問 - 上記とそれがそれらにも答えているかどうかに応じて、ここまたは別の質問で尋ねます。
画面が回転するとどうなりますか?ステータス バーやナビゲーション バーが表示されなくなった場合 (たとえば、全画面表示になった場合) はどうなりますか? それを処理し、高さを読み直して、ビューを再作成する必要があるようです。それを行う方法についての考えやガイダンスは大歓迎です。
=== 更新 - これまでの進捗状況 ===
画面サイズとステータス バーに関する情報 (サイズ、場所) だけが必要だと思っていましたが、ナビゲーション バーが画面の左側にある場合があるため、それが必要であり、キーボードも影響を与える可能性があります。
で画面サイズを取得できます
私はまださまざまな場所とサイズに取り組んでいます。ビューを作成してからインセットを読み取ろうとしましたが、間違った答えが得られました。したがって、より良い答えが得られない限り、おそらく使用する必要があります
しかし、ステータス バーが非表示になっていると、場合によっては間違った回答が返される可能性があり、画面上のどこにあるのかわかりません。私はまだそれに取り組んでいます。試してみることがいくつかあるので、見てみましょう。
サービスで回転を処理するには、onConfigurationChanged()を使用します。サービスを使用して Android で方向の変化を監視する方法を参照してください。
それが誰かの助けになることを願っています-どうか、それらの最後の部分を必死に探してください.
android - スプラッシュスクリーンを表示するためのシステムバーなしでフルスクリーンにする方法は?
スプラッシュ スクリーンとしてシステム バーのないフル スクリーンを作成しようとしていますが、アプリケーションの起動時にルート レイアウトのサイズを変更する際に問題が発生します。
ルート レイアウトがナビゲーション バーの後ろでサイズ変更され、実際にやりたかったことを画面の最後に移動するため、下部に問題はありません。問題は、ルート レイアウトの上部にあることです。これは、画面の上部に移動しないためです。画面の上部に、ステータス バーを非表示にした後に残る黒い空白があります。
注: minSdkVersion 22 と targetSdkVersion 29 を使用しています。
デモンストレーションの目的で、ルート レイアウトとして Constraint Layout 内の 1 つのアクティビティと、緑色の背景と 2 つのボタンを持つ 1 つの対応する XML レイアウト ファイルを含む単純なコードを使用します。
主な活動:
アクティビティ_メイン:
テーマ:
左側は、システム バーのない黒いスペースで画面に触れる前のアプリですが、サイズ変更されたルート レイアウト (緑色) が正しくありません。右側は、システム バーで画面に触れ、サイズ変更されたルート レイアウトを修正した後のアプリです。
画面を操作する前に、黒いスペースのない全画面表示と、完全にサイズ変更されたルート レイアウトと、スプラッシュ スクリーン用の非表示のシステム バーを備えたアプリが必要です。どうやってやるの?
更新: minSdkVersion 22 と targetSdkVersion 29 を使用しており、Samsung Galaxy A40 (Android 10、API 29) でテストしました。Samsung では常に上部に黒いスペースが表示されますが、ZTE Nubia (API 22) ではすべて正常に動作します。これまでの唯一の解決策は、次のようにデバイス設定を変更することです: Galaxy でフルスクリーン アプリを有効にする方法@SlothCoding がコメントで教えてくれました。
UPDATE2:デバイス設定を変更したくない場合は、画面領域にカメラが組み込まれている電話用のこのコードが必要です。公式には、カットアウト領域にコンテンツを表示するために必要です。