LoginSignup
0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Androd15からedge-to-edgeがデフォルトで適用されるので挙動を確認してみた

Last updated at Posted at 2024-06-24

はじめに

Android15 から edge-to-edge がデフォルトになり、意図しない挙動になっていないかの確認を行ってみました。
確認は、弊社で公開している 家計簿 アプリで行いました。

変更内容の確認

変更点としては、以下になります。

  • targetSdk35 に変更すると edge-to-edge が Android15 で対応していないアプリでも適用されること
  • M3 を適用している場合、自動的に Insets を適用するため、特段対応が不要であること
  • M2 を適用している & edge-to-edge 対応していない場合、自動的に Insets が適用されないため、手動での対応が必要であること

実際に動かしたときの確認

家計簿 は、M3 を適用してアプリを作成しているため、自動で適用されるはずですが、確認していきます。
確認は、以下 OS のエミュレーターで行いました。

  • Android14
  • Android15

targetSdk 34 で動かしたとき

Android14 Android15
Screenshot_20240625_014121.png Screenshot_20240625_013917.png

targetSdk を上げていないため、挙動に差異はありませんでした。

※ StatusBar の大きさに違いはありますが、これは 実機の Android15 では発生していないため、エミュレーターの問題です。

targetSdk 35 で動かしたとき

Android14 Android15
Screenshot_20240625_013205.png Screenshot_20240625_013317.png

M3 を適用しているため、対応不要で edge-to-edge が適用されていました。

ただし、Android15 で以下の気になるところがありました。

  • BottomSheetNavigation bar の領域分下がるため、閉じた後に開くことがしづらい
  • adjustResize を設定しているにも関わらず、ソフトウェアキーボードでアプリの内容が隠れる

これは対応が必要のため、次のセクションで説明します。

  • Status Bar の情報が白地に白文字でライトモード時に見えなくなっている

これは、 OS 上の問題なのかもしれませんので、もう少し待ってみます。

BottomSheetが下がることソフトウェアキーボード内にアプリ内容が隠れることについて

If your app is using views and BottomSheet, SideSheet or custom containers, apply padding using ViewCompat.setOnApplyWindowInsetsListener. For RecyclerView, apply padding using this listener and also add clipToPadding="false".

上記から、WindowInset が自動で適用されない模様で、 Compose では以下を追加して対応します。

※ ドキュメントを閲覧した限り、そのように解釈しましたが、もし異なっていましたらコメント等でご指摘ください。

Box(
  modifier = modifier = Modifier.safeDrawingPadding(),
  ...
) {

safeDrawingPadding は、ステータスバー、ナビゲーションバー、IMEのスペース分、適用されます。

変更したところ以下のように対応できました。

閉じているときの BottomSheet

対応前 対応後
Screenshot_20240625_014435.png Screenshot_20240625_012646_collasped.png

ソフトウェアキーボード

対応前 対応後
Screenshot_20240624_010912.png Screenshot_20240625_012709_keyboard.png

まとめ

今回確認したアプリでは、 M3 を使用していたため、特段大きな変更がないため、修正工数もほとんどかからないことがわかりました。
ですが、 M2 を使用している場合は、手動で Insets を適用する必要があるため、一度 targetSdk を上げてみると良いかと思います。
特に大規模なアプリの場合は、対応に工数がかかると思いますので、早めに確認した方が良さそうです。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0