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

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 回答
0

抱歉耽搁了,所以,首先,你必须决定你想要哪个公众。您必须记住,周围有无数设备,几乎不可能覆盖所有设备。我建议您从被认为是正常的设备(屏幕正常和 MDPI 密度)开始,因为这是基线。然后,基于第一个担心其他人。了解资源文件夹的区分仅在必要时进行。在大多数情况下,用于基线的资源对每个人都很有效。

希望能帮助到你。

于 2013-07-23T18:02:09.253 回答