开始在某些 7 英寸 Android 机型上测试我的应用程序时,我遇到了一个奇怪的行为,我想了解其他人是否发现了同样的问题,以及人们推荐的修复方法。
详情如下:
该应用程序具有完整的平板电脑支持,由布局限定符触发。 xlarge 设备获得平板电脑模式,屏幕上显示多个 fragment 。
对于较新的 Android 版本,还有一些设置变量的值,这些变量使用 sw600dp 限定符以及 xlarge 限定符更改流上的 UI。
问题:
我现在正在 Kindle Fire 和 RIM BlackBerry Playbook 上进行测试,还想支持即将推出的 Google Nexus 平板电脑(或任何名称)和其他 7 英寸外形设备。
playbook 和 fire 都有 7 英寸屏幕和 1024x600 屏幕分辨率。
然而,该剧本似乎欺骗了 Android,使其认为它是一个超大型设备,而 fire 并没有这样做。
平板电脑和标准 UI 都可以正常工作,但恕我直言,平板电脑模式更好,适合在 7 英寸设备上使用。但是,如果我将布局插入大型限定符以同时启动平板电脑模式,我也会得到它,例如在 Note 或其他相当小的设备上。
对于 Android 4x,我可以使用 sw600dp 和其他限定符,但是旧版本呢?我假设一个 7 英寸的设备应该像平板电脑一样运行,但是例如注意..
此场景的最佳做法是什么?我对剧本报告 xlarge 的观察是否正确?
最佳答案
However the playbook seems to trick Android into thinking it is a xlarge device, while the fire does not do that.
设备制造商负责选择设备在尺寸和密度方面的分类。对于 RIM 和亚马逊这样的制造商来说,这是双倍的,他们不想要 Play Store,因此不必遵守 Play Store 规定的任何特定兼容性要求,因此欢迎他们对 Google 的指导嗤之以鼻。
What are best practices for this scenario?
我不能告诉你“最好”。
但是,如果您希望为特定设备覆盖某些布局以使用特定尺寸,我会尝试以下方法(假设您将在正常情况下使用的布局称为 R.layout。主
):
第 1 步:创建 res/layout/main_funky.xml
作为到 res/layout-xlarge/main.xml
的符号链接(symbolic link)或硬链接(hard link)(同样适用于 -土地
等)。
第 2 步:在您的 Java 代码中,无论您在哪里引用 R.layout.main
(例如,Fragment
的 onCreateView()
>), 根据 android.os.Build
数据决定是否加载 R.layout.main
或 R.layout.main_funky
来检测这些按型号分类的古怪设备。由于 R.layout.main_funky
是您的常规 main
布局之一,因此您所有依赖于小部件的代码都应该不受此选择的影响。
第 3 步:在您的特定情况下,将 MMPD(magic Maven pixie dust)添加到第 1 步和第 2 步...:-)
Are my observations with the playbook reporting xlarge correct?
我买了一本 Playbook,确定 RIM 的发行模型……令人不快,并且做了最低限度的工作,在书中有一章。我没有尝试查看它是 -large
、-xlarge
还是其他。
话虽这么说,NOOK 平板电脑 IIRC 却受此困扰(声称是 -xlarge
而不是 -large
)。
我希望 Google Nexus 平板电脑(如果这样的事情实现)能够正确地遵守大小桶,并且运行足够新的 Android 版本,-sw600dp
和 kin 可以工作。
关于android - Android 中的 7 英寸平板电脑 - 屏幕尺寸限定符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10889409/