繁体   English   中英

显示密度和资源使用情况(ldpi / mdpi / hdpi / xhdpi)

[英]display density and resources usage (ldpi/mdpi/hdpi/xhdpi)

所以我得到了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。 我很困惑。 为什么heck 240被威胁为MDPI?

我如何发现android将HTC视为MDPI设备:简而言之,我要做的是确保-将一张大图片放置到drawable-hdpi(猜测AOS会使用它),将一张较小的图片放置到drawable-mdpi,然后运行一个应用程序看看它会用。 并且它始终使用来自drawable-mdpi的图像而不是drawable-hdpi。 为了知道我的设备上的图像外观,我之前运行了应用程序,将图像放置到项目的可绘制文件夹中。
但是,就像我上面提到的,我猜测我的800x480 HTC是HDPI,这是因为代码基于displayDensity而不是Configuration。 配置说我的设备是Configuration.SCREENLAYOUT_SIZE_NORMAL,似乎这就是AOS将我的设备仅视为MDPI的原因。 因此,结合240dpi的DisplayDensity(必须为HDPI而不是MDPI),确实令人沮丧。 那么现在的问题是,为什么显示密度为240dpi,配置会将设备设置为MDPI类型? 这是什么原因? 我当时以为检测设备类型的唯一方法是其显示密度。 如果是240dpi,则必须是HDPI设备而不是MDPI。

您可以尝试阅读以下页面: http : //developer.android.com/guide/topics/resources/providing-resources.html ,它在您要组织资源文件夹时显示了有关屏幕密度和其他方面的完整说明。

关于被当作MDPI对待的设备,它可能就像Nexus 7,我们确定它是MDPI,但是它使用的是HDPI的图像以及MDPI / sw600dp的一些值(您可以在上面的链接中找到更好的解释) ,因为它的密度实际上是TVDPI,所以它是HDPI和MDPI之间的“中间”密度。 尝试在GooglePlay上下载名为ScreenInfo的应用。 它显示有关设备屏幕的各种信息,并可以帮助您确定HTC。

希望能帮助到你。

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

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM