Screen Zoom
Android N Developer Previewで搭載されたユーザ補助機能Screen Zoom
.
低視力者はこの機能を使うことで表示を拡大した状態で使うことができます.
(あるいは表示を縮小して情報量を増やすことも可能です)
このScreenZoom
機能はDensityDPIを変更することで表示の拡大・縮小を実現しています.
DensityDPI値を大きくしても画面の物理サイズ(px)は変わりませんので結果的に拡大表示されているように見せることができる仕組みです.
デフォルトがxxhdpi
なNexus5Xも, ScreenZoom
の設定でxhdpi
, xxxhdpi
に変更できます.
開発者はAndroidN以降で端末のDensityDPIが変更される可能性を考慮する必要があります.
drawable-xxx
ScreenZoom
でDensityが変わりますので, drawable-xhdpi
, drawable-xxhdpi
など設定によって適切なdpi設定修飾子のリソースが選択されるようになります.
ただ, 動作確認でハマったポイントがありました.
AndroidStudio2.1で動作確認したところ, たとえ各DPI毎のdrawableリソースを持っていたとしても, ScreenZoom
の設定を変えてもそれらが適切に反映されませんでした.
例): ScreenZoom値を変えても参照されるdwarable
リソースが変わらない…
ドロイド君アイコンに格納したDPIの値を記載しています. 上記はdrawalbe-xxhdpi
に格納された画像が表示されている状態です.
原因はAndroidStudioがインストール先のデバイスを決定してから作成するapkにありました.
実際に作成されているapkを確認すると, インストール対象デバイスのデフォルトDensityDPI以外のリソースを削除している様子でした.
動作確認をするためには./gradlew :app:assembleDebug
で全DensityDPI向けのdrawableを含めたapkを作成し, インストールする必要がありました.
例): ScreenZoom値を変えると参照されるdwarable
リソースが変わる
以上です.