それで、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 デバイスである必要があります。