web-dev-qa-db-ja.com

Nexus 6の密度が560 dpiである理由

Nexus 6のリソースを準備するには?画像をxxxhdpiに配置すると、縮小して品質が低下します。 xxhdpiに画像を配置すると、スケールアップして品質が低下します。実際の密度493ppiがxxhdpi〜480dpiに近い場合、開発者が密度のセットアップ値560dpiを決定した理由は何ですか?

Nexus 6は、2560 x 1440(493 ppi)の解像度で5.96インチのクアッドHDスクリーンディスプレイを搭載しています。これは、約730 x 410 dp(密度に依存しないピクセル)に変換されます。

Nexus 6の量子化密度は560 dpiで、これはxxhdpiとxxxhdpiのプライマリ密度バケットの間にあります。

Nexus 6の場合、プラットフォームはxxxhdpiアセットを縮小しますが、使用できない場合はxxhdpiアセットを拡大します。

xxhdpi ~480dpi
xxxhdpi ~640dpi
32
anber

drawable-560dpiを560 dpiで使用できます。 drawable-560dpidrawable-xxxhdpiの画像の解像度は同じです。

7
Ramesh Kumar

Nexus 6の場合、物理密度が約493(getResources()。getDisplayMetrics()。toString())であっても、メーカーは560(adb Shell getprop ro.sf.lcd_density)の量子化密度を選択しました。彼らがこれを行う理由を理解するには、量子化された密度の意味と、それが画像リソースのレンダリングに与える影響を理解する必要があります。これについては here で説明します。

つまり、560の量子化密度は、イメージのロード/レンダリングに使用されるスケールファクターが3.5であることを意味します。 D.ハックボーンの言葉では、「密度...は、デバイスメーカーがUIを実行する意味があると判断した抽象的な密度バケットです 。これは、「dp」ユニットなどを評価し、リソースからビットマップを選択およびスケーリングするために使用されます。

7
Joseph Johnson

有効な質問だと思います。一部のデバイスはサポートされているdpi(xxhdpiとxxxhdpi)の間にあり、画像を使用すると不必要なソフトウェアスケーリングが行われます。品質の違いについては気にしませんが、アプリケーションの起動パフォーマンスに影響します。 BitmapFatory で変数willscaleをチェックします。これが真の場合、プラットフォームは不要なソフトウェアスケーリングを行います。理想的には、ハードウェアUIはこれをopenGL ESを使用して直接スケーリングする必要があります。

1
Prashant Sharma