所以我得到了 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-mdpi 中的图像而不是 drawable-hdpi。要知道哪个图像在我的设备上看起来如何,我之前运行了应用程序,将图像放入项目的可绘制文件夹。
但是,就像我上面提到的,我猜测我的 800x480 HTC 是 HDPI,因为代码基于 displayDensity 而不是基于配置。配置说我的设备是 Configuration.SCREENLAYOUT_SIZE_NORMAL,这似乎就是 AOS 仅将我的设备视为 MDPI 的原因。所以结合 240dpi 的 DisplayDensity(必须是 HDPI 而不是 MDPI)真的很令人沮丧。所以现在的问题是为什么使用 240dpi 配置的显示密度将设备设置为 MDPI 类型?这是什么原因?我在想检测设备类型的唯一方法是它的显示密度。如果是 240dpi,它必须是 HDPI 设备而不是 MDPI。