Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
布局不规则的Android HDPI设备_Android_Layout_Resolution_Qualifiers_Hdpi - Fatal编程技术网

布局不规则的Android HDPI设备

布局不规则的Android HDPI设备,android,layout,resolution,qualifiers,hdpi,Android,Layout,Resolution,Qualifiers,Hdpi,我发现越来越多的android设备布局不规则,尤其是在HDPI部分 问题是,尽管我在xml布局中只使用DIP值,但我更复杂的布局无法正确缩放。动画尤其有问题,因为我在TransformAnimation代码中使用浮点值 例如,我将拥有一部240dpi的手机,屏幕为3.7英寸,采用安卓标准分辨率。我可以为这个设备制作HDPI和大型布局,让它们完美地适合所有的设计和美学 然后我有一部4.2英寸的手机,但它的垂直分辨率仍然低于XHDPI或XLARGE。如果您询问设备的DPI是多少,它也会报告240dp

我发现越来越多的android设备布局不规则,尤其是在HDPI部分

问题是,尽管我在xml布局中只使用DIP值,但我更复杂的布局无法正确缩放。动画尤其有问题,因为我在
TransformAnimation
代码中使用浮点值

例如,我将拥有一部240dpi的手机,屏幕为3.7英寸,采用安卓标准分辨率。我可以为这个设备制作HDPI和大型布局,让它们完美地适合所有的设计和美学

然后我有一部4.2英寸的手机,但它的垂直分辨率仍然低于XHDPI或XLARGE。如果您询问设备的DPI是多少,它也会报告240dpi。不幸的是,由于实际不同的纵横比、实际不同的屏幕大小和实际不同的分辨率,我的布局无法正确缩放。也没有办法创建一个单独的布局文件夹,因为设备认为它是一个大的hdpi布局,因为它只是报告错误。(EVOs和其他几款“长”手机)阅读android文档时,你似乎可以使用
layout long large
和其他类型的组合,但手机本身仍然认为它只是layout large。
long
限定符确实适用于报告自身正确信息的设备

人们如何在Android框架中处理这一问题,而不使用代码。对我来说,这将是一项非常乏味的工作,如果硬件错误地报告了关于自身的所有信息,我会质疑如何动态地这样做


感谢您的洞察力。

解决这一问题的一种方法是,每次应用程序启动时,它都会将其用户代理发送到服务器。然后,服务器确定要使用的正确映像,并将该信息发送给使用该映像显示该映像的客户端。其他移动平台也是如此,尽管Android解决了这个问题,但你似乎有问题。试一下


您是否考虑过使用9路径图像?

您的目标框架是什么?我认为,除非API目标为9或更高,否则设备不会将自身报告为xhdpi。

我解决此问题的方法是越来越多地依赖RelativeLayout的定位。

我尝试在清单中增加API目标10,但对报告更改没有影响。xlarge屏幕至少为960dp x 720dp。这款手机(包括EVO 4g、EVO 3d等)的通话速率为960 x 540 dp。它是一个4英寸以上的屏幕,但使用
getResources().getDisplayMetrics().densityDpi
功能报告为240dpi,因此当布局明显不同时,它会响应大的可绘制hdpi。谷歌T-Mobile G2是一个3.7英寸240dpi屏幕,800x480屏幕,可响应大布局和可绘制hdpi。硬编码分辨率很差,因为可能会出现另一个非标准设备我已经考虑过了,但是9-patch图像在这里有什么优势呢?