2011-10-25 38 views
2

我遇到越来越多具有不规则布局的Android设备,特别是在HDPI部分。具有不规则布局的Android HDPI设备

问题是,即使我只在我的xml布局中使用DIP值,我的更复杂的布局也不能正确缩放。因为我使用TransformAnimation代码中的float值,所以动画特别成问题。

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

然后我有一个4.2英寸的手机,但其垂直分辨率仍然低于XHDPI或XLARGE。如果您问设备DPI是什么,它也会报告240dpi。不幸的是,由于实际上不同的宽高比,实际上不同的屏幕尺寸和实际上不同的分辨率,我的布局不能正确缩放。也没有办法做一个单独的布局文件夹,因为设备THINKS它是一个layout-large和hdpi,因为它只是报告它错了。 (EVO,其他几款“长”手机)阅读Android文档,似乎可以使用layout-long-large和其他类型的组合,但手机本身仍然认为它只是布局大。 long限定符在报告有关其自身信息的设备中工作。

人们如何处理与Android框架,而不是在代码中执行此操作。这对我来说将是一件非常乏味的工作,如果硬件错误地报告了有关自身的所有信息,我对如何动态地做这件事有疑问。

Insight深表赞赏。

回答

0

我对这个问题的解决方法是依赖RelativeLayout的定位越来越多。

0

解决此问题的一种方法是,每次应用程序启动时,都会将其useragent发送到服务器。然后,服务器确定要使用的正确图像,并将该信息发送给使用该信息显示该图像的客户端。其他移动平台就是这种情况,尽管Android解决了这个问题,但您似乎遇到了问题。试试看。

还有你考虑使用9路径图像?

+0

我已经考虑过了,但9-patch图片在这里有什么优势? – CQM

1

你的目标框架是什么?我想,除非API目标是9或以上,否则该设备不会将其自身报告为xhdpi。

+1

我试图升级到清单中的API目标10,在报告更改中没有任何影响。 xlarge屏幕至少960dp x 720dp。这款手机(包括EVO 4g,Evo 3d等)都是960 x 540 DP。它是一个4英寸以上的屏幕,使用'getResources()。getDisplayMetrics()。densityDpi'函数报告为240dpi,因此当它明显不同时,它响应layout-large和drawable-hdpi。 Google T-Mobile G2是一款3.7英寸240dpi屏幕,800x480屏幕,响应布局大和可绘制的hdpi。硬编码解决方案很糟糕,因为很可能会出现另一种非标准设备 – CQM