2012/07/20

Android:抽象ドット密度tvdpi

抽象的なドット密度を表すリソース修飾子 tvdpiAndroid3.2で追加されました。
Android 3.2 Platform

tvdpiはテレビやそれに類似したデバイス向けに用意されています。
最近ではNexus7がtvdpiを持つ端末として知られています。
Getting Your App Ready for Jelly Bean and Nexus 7


●tvdpi概要

tvdpiは213dpi、mdpiより1.3312501倍のドット密度を持ちます。
これにより、各抽象ドット密度比は
 120:160:213:240:320 = 3 : 4 : 5.325 : 6 : 8
になります。

mdpiで縦横100pxの画像を用意する場合、tvdpiでは縦横133pxの画像が必要です。


●tvdpiを試す

下記の設定値をもつエミュレータでのAVDを作成することでtvdpiの動作を確認できます。
  • Skin Resolution:1280x800  or 600x960(Nexus7)
  • Abstract LCD:213
手元の環境だとSkinをWXGAとしても213dpiになりませんでした。
なので、手打ち(Resolution)で解像度を指定します。


●tvdpiのリソース修飾子選択基準

xxx-hdpi と xxx-tvdpi それぞれのリソースを持つアプリを下記の環境で動作させた場合どうなるのかを検証します。

・240dpiの端末で実行
結果:hdpiが参照される。もしhdpiリソースを持っていない場合はtvdpiが参照される。


・213dpiの端末で実行
結果:tvdpiが参照される。もしtvdpiリソースを持っていない場合はhdpiが参照される。

後者については、よりhigh densityなhdpiがダウンスケールされて参照されます。
don’t panic! We actively discourage you from rushing out and creating new assets at this density; Android will scale your existing assets for you. In fact the entire Jelly Bean OS contains only a single tvdpi asset, the remainder are scaled down from hdpi assets.    
[from Getting Your App Ready for Jelly Bean and Nexus 7]


以上です。