RareJob Tech Blog

レアジョブのエンジニア・デザイナーによる技術ブログです

Android Qの折りたたみ式デバイス対応を試してみた話

ネイティブアプリ開発を担当している杉山です。 今月上旬ついにAndroid 10がリリースされたということで、そのことについて書いていこうと思います。

環境

AndroidStudio 3.5

AVD: 7.3 Foldable API 29 Android 10.0

*画面開閉を擬似的に行うには、AVDの横に表示されるメニューの画面開閉ボタン?を押してください。

f:id:r_sugiyama:20190919131044p:plainf:id:r_sugiyama:20190919131046p:plain

画面比率を意識

折りたたみデバイスでは、画面開閉時などに画面比率が変化します。

画面比率の問題をクリアするためにマニフェストファイルにmaxAspectRaitoまたはminAspectRaitoを記述しましょう。

maxAspectRaitoは、サポートできない画面比率がある場合などに用います。 またminAspectRaitoは、最小アスペクト比を設定します。

*minAspectRaitoは、10進数形式で最小アスペクト比を設定します。

*minAspectRaitoは、下記「マルチウィンドウを意識」に記述した「resizeableActivity=true」との併用はできません。(記述は可能ですが、属性が無視されます)

マルチウィンドウを意識

マルチウィンドウモードでもアプリがスムーズに動作するよう、マニフェストファイルにresizeableActivityの設定をしましょう。

resizeableActivityにtrueを設定することにより、折りたたみデバイスを含むアプリの動作環境との互換性を高めることができます。 また、resizeableActivityにfalseを設定することにより、マルチウィンドウモードを無効化することができます。

リソースへの排他的アクセスの対処は「onTopResumedActivityChanged」を利用しましょう。

こちらのコールバックメソッドは、アクティビティの再開状態を得た場合もしくは失った場合に呼び出されます。

主にマイクやカメラなどの単一ユーザーの共有リソースを使用している場合に、この情報を確保しておくことが重要となってきます。

まとめと余談

折りたたみ式スマホ(フォルダブル)の対応は、基本的に画面比率とマルチウィンドウを意識すること、 その中でリソースが欠落しないかを確認することが主なようです。

個人的には、画面の回転対応やアプリのマルチウィンドウ化の延長線のようなものだと感じました。

ほかにもAndroid Qから様々な要素が追加されているので、色々と試してみたいと思います。

Android Qの正式名称がAndroid10になり、お菓子のコードネームがなくなって少し寂しい…