投稿

ラベル(Android Kotlin備忘録)が付いた投稿を表示しています

アプリ開発備忘録: ③ Android 15からはEdge-to-Edge表示が強制適用に (Part 3/3)

Android 15以降から画面のEdge-to-Edge表示が強制適用になって、同時に画面上部の時間やバッテリーの残量が表示される「ステータスバー」の背景が透明になりました。 「 パート2 」では、強引にスタータスバーの背景色を設定する方法を確認しましたが、この方法だと背景色の色を設定できるタイミングに少しの制限が入ります。 なので今回は。違う方法でステータスバーの背景色を設定する方法をこの備忘録に残しておきます。 [目次] パート 1 Edge-to-Edge表示 (Android アプリ) テストアプリを使って確認 ターゲットSDKバージョンを35に変更 ステータスバーとAppBarが重ならない様にする例 (XMLレイアウト) ※:強制適用されるEdge-to-Edge表示を一時的に無効にする方法 (SDK 35) パート 2 Android15よりも前のデバイスでもEdge-To-Edge表示 ステータスバーの背景色 パート 3 (このメモ) パート2で確認した背景色を設定する方法 別の方法 例: JetPack Compose 例: Flutter 追記 パート2で確認した背景色を設定する方法 import android.graphics.Color import android.os.Build import android.view.View import android.view.Window import android.view.WindowInsets : : : : class MainActivity : ComponentActivity() { fun setStatusBarColor ( window : Window, color : Int) { ...

アプリ開発備忘録: ① Android 15からはEdge-to-Edge表示が強制適用に (Part 1/3)

イメージ
少し前に手持ちのAndroid携帯の一つにシステムのアップデートが入ったのですが、それ以降、いくつかのアプリで、画面の上下の表示がおかしくなってしまいました。。。 実は、このアップデートでアンドロイドOSが「 アップサイドダウンケーキ 」(Android 14, SDK 34)から「 バニラアイスクリーム 」 (Android 15, SDK 35) に更新されて、Android 15からはアプリの表示がデフォルトで Edge-to-Edge (端から端まで) 表示 の仕様、つまり全画面表示になったのが原因でした。 (👉「📑 動作の変更点: Android 15 以上をターゲットとするアプリ 」) これまでもアプリを画面の端から端までの全画面で表示する「 没入モード 」という機能があったので、そのモードでの画面表示がデフォルトになったという理解に少し近いのですが。。。 実際はそうではありません。 没入モードの場合は、アプリが全画面で表示される以外に、「 システムバー 」と呼ばれる、画面の上部に表示される「ステータスバー (Status Bar)」と下部に表示される「ナビゲーションバー」の表示を必要に応じて表示/非表示に出来るほか、非表示の場合でもユーザーの操作によっては再表示される仕様になっています。 (👉「📑 没入モードのシステムバーを非表示にする 」) Status Bar と App Bar Android 15よりも前のOSでは 、没入モード以外では、アプリは全画面にではなく、 自動的に 上下のシステムバーの分が差し引かれた部分だけに表示される仕様になっていて、アプリの表示が上下のシステムバーに重なって表示される事がない様になっていました。 Android 15以降からは 、システムバーの表示/非表示に関係なく、アプリの表示サイズが端から端までの全画面表示になるので、必要に応じて、 インセット(Inset) 情報などを使ってアプリの表示コンテンツがシステムバーの表示と重ならない様に調整する必要があります。。。。。 ...

Android/Kotlin備忘録: SplashScreen APIが導入されていなかったアプリ (targetSDK ≥ 33)

イメージ
最近、アプリの開発用にと、10-インチ画面の安いAndroidタブレット (WiFi)を購入しました。 カタログ上だと、そのタブレットの搭載OSは「Android 12」 (コードネーム: スノーコーン) となっていて、 数ヶ月前 (2023年10月) には「Android 14」 (コードネーム: 逆さケーキ) がリリースされているので、OSの型落ちが少し気になりましたが、購入後、電源を入れて少し使っていると「アップデートがあります」という通知が出たのでポチポチしたらすんなりと「Android 12」から「Android 13」 (コードネーム: ティラミス) にアップデートされました。 これまでアプリ開発には主にエミュレーターのAndroidを使っていて、手持ちのAndroidデバイスでは一番新しいOSのものが「Android 9」 (コードネーム: パイ)でしたw。 これで開発したアプリも実機で確認が出来るという事で、早速、Google Playで公開しているアプリをテストしてみましたが、「 ツイキャス専門店『コメ欄』Lite 」のバージョン0.1.1nが すごい事になっていました 。 [ 目次 ] バージョン0.1.1n 解決方法: SplashScreen API 詳細 バージョン0.1.1n 上の動画はAndroid13のタブレットで『コメ欄』Liteのバージョン0.1.1nの動作チェックを行った際の録画になりますが、前のフレームが消えすに残って重なって表示され、何が何なのか見えなくなってしまっています。 解決方法: SplashScreen API 結果としては、それまで使っていたスプラッシュ画面を、Android 12で追加された「 SplashScreen API 」を使う仕様に変更した処、テストに使ったAndroid13のタブレットでは問題が解決されていました。 👉『 スプラッシュ画面の実装を Android 12 以降に移行する 』(Androidデベロッパー...