2

それで、800x480ディスプレイのHTCスマートフォンを手に入れました。私はいつもそれが HDPI デバイスだと思っていました。そして、次のコードを使用して保証されました:

Display display = activity.getWindowManager().getDefaultDisplay();
DisplayMetrics displayMetrics = new DisplayMetrics();
display.getMetrics(displayMetrics);
displayDensity = displayMetrics.densityDpi;

私のデバイスは240dpiです。しかし、実験的に、Android は私のデバイスを MDPI としてのみ脅威にさらしていることを発見しました。きっとこれだ。別の800x480(ZTE)で同じことをテストしましたが、結果は同じでした.displayDensityで240を示していますが、AndroidはMDPIデバイスとして脅威を与えています...しかし、なぜそうなのですか? android.devepoler では、240dpi が HDPI であると述べています。私は完全に混乱しています。なぜ一体 240 が MDPI として脅かされているのですか?

AndroidがHTCをMDPIデバイスとして扱っていることをどのように発見したか: 手短に言えば、大きな画像をdrawable-hdpi(AOSがそれを使用すると推測)に配置し、小さな画像をdrawable-mdpiに配置し、アプリを実行しましたどちらを使用するかを確認します。そして、drawable-hdpi の代わりに drawable-mdpi からの画像を常に使用していました。デバイスでどの画像がどのように見えるかを知るために、以前にプロジェクトの描画可能なフォルダーに画像を配置するアプリを実行しました。
ただし、上で述べたように、私の 800x480 HTC は、構成ではなく displayDensity に基づいたコードにより HDPI であると推測していました。構成では、私のデバイスは Configuration.SCREENLAYOUT_SIZE_NORMAL であり、AOS が私のデバイスを MDPI のみとして扱う理由のようです。そのため、240dpi の DisplayDensity (MDPI ではなく HDPI でなければなりません) と組み合わせると、本当にイライラします。では、問題は、なぜ 240dpi の表示密度で構成がデバイスを MDPI タイプに設定するのかということです。これの理由は何ですか?デバイスの種類を検出する唯一の方法は、その表示密度であると考えていました。240dpi の場合は、MDPI ではなく HDPI デバイスである必要があります。

4

2 に答える 2

0

このページを読んでみてください: http://developer.android.com/guide/topics/resources/providing-resources.html、リソース フォルダーを整理する場合の画面密度などについての完全な説明が表示されます。

MDPI のように扱われるデバイスについては、Nexus 7 のようなものかもしれません。MDPI であると確信していましたが、HDPI からの画像と MDPI/sw600dp からのいくつかの値を使用していました (上記のリンクでよりよく説明されていることがわかります)。 、その密度は実際にはTVDPIであり、HDPIとMDPIの間の「中間」密度であるためです。GooglePlay で ScreenInfo というアプリをダウンロードしてみてください。デバイス画面に関するさまざまな情報を表示し、HTC について確認するのに役立つ場合があります。

それが役に立てば幸い。

于 2013-04-05T15:22:58.600 に答える