我开始在一些7英寸Android机型上测试我的应用程序时遇到了一种奇怪的行为,我想知道其他人是否发现了同样的问题以及人们推荐的解决方案。
以下是详细信息:
该应用程序具有完整的平板电脑支持,使用布局的限定符触发。 xlarge设备进入平板电脑模式,屏幕上显示多个片段。
对于较新的Android版本,还有一些值设置变量,使用sw600dp限定符以及xlarge来更改流上的UI。
问题:
我现在正在测试Kindle Fire和RIM BlackBerry Playbook,并且还希望支持即将推出的Google Nexus平板电脑(或其他任何产品)以及其他7英寸外形设备。
剧本和火都有7英寸的屏幕和1024x600的屏幕分辨率。
然而,剧本似乎欺骗Android认为它是一个xlarge设备,而火不会这样做。
平板电脑和标准用户界面都可以正常工作,但平板电脑模式更好,可以在7英寸设备上使用。但是,如果我将布局推入大限定符中以便在火上获得平板电脑模式,我也会得到它,例如在Note或其他相当小的设备上。
使用Android 4x我可以使用sw600dp和其他限定符,但旧版本呢?我假设7英寸设备应该像平板电脑一样,但是例如注意..
此方案的最佳做法是什么?我对剧本报道xlarge的观察是否正确?
答案 0 :(得分:3)
然而,剧本似乎欺骗Android认为它是一个xlarge设备,而火不会这样做。
设备制造商可以选择设备在尺寸和密度方面所涉及的存储桶。对于像RIM和亚马逊这样的制造商来说,这个数字增加了一倍,他们不想要Play商店,因此不必遵守Play商店所要求的任何特定兼容性要求,所以欢迎他们在Google的指导下嗤之以鼻。
此方案的最佳做法是什么?
我不能告诉你“最好的”。
但是,如果您希望覆盖某些布局以使用特定大小的特定设备,我会尝试(假设您将用于正常情况的布局称为R.layout.main
):
步骤1:创建res/layout/main_funky.xml
作为符号链接或指向res/layout-xlarge/main.xml
的链接(同样适用于-land
等)。
步骤2:在您的Java代码中,无论您在何处引用R.layout.main
(例如onCreateView()
的{{1}}),都要决定是否加载Fragment
或{{ 1}}取决于R.layout.main
数据,以按模型检测这些奇怪的设备。由于R.layout.main_funky
是您的正常android.os.Build
布局之一,因此依赖于窗口小部件的所有代码都不受此选择的影响。
步骤3:在您的特定情况下,将MMPD(魔法Maven小精灵粉尘)添加到步骤#1和#2 ......: - )
我对剧本报道xlarge的观察是否正确?
我买了一本Playbook,确定RIM的发行模式......令人不快,并且做了最低限度的书籍章节。我没有尝试查看它是R.layout.main_funky
,main
还是其他内容。
话虽如此,NOOK Tablet IIRC仍然受此影响(声称是-large
而不是-xlarge
)。
我希望谷歌Nexus平板电脑,如果这样的事情能够实现,能够正确地兑现大小的存储桶,再加上运行足够新的-xlarge
和亲属的Android版本。