开始在某些7英寸Android机型上测试我的应用程序时,我遇到了一个奇怪的行为,我想了解其他人是否也发现了相同的问题以及人们建议的解决方法。
详细信息如下:
该应用程序具有完整的平板电脑支持,该支持由布局的限定符触发。 xlarge设备进入平板电脑模式,在屏幕上显示多个片段。
对于较新的Android版本,还存在一些设置变量的值,这些变量使用sw600dp限定符和xlarge限定符更改流上的UI。
问题:
我现在正在Kindle Fire和RIM BlackBerry Playbook上进行测试,并且还希望支持即将推出的Google Nexus平板电脑(或称其为其他产品)和其他7英寸尺寸的设备。
剧本和壁炉都具有7英寸屏幕和1024x600屏幕分辨率。
然而,这本剧本似乎欺骗了Android,使它认为这是一个xlarge设备,而大火却没有这么做。
平板电脑和标准UI都可以正常工作,但是imho平板电脑模式更好,可以在7英寸设备上使用。但是,如果我将布局推入大型预选赛中以使平板电脑模式也起火,我也会得到它,例如在Note或其他相当小的设备上。
使用Android 4x,我可以使用sw600dp和其他限定符,但是较旧的版本呢?我假设7英寸设备的行为应该像平板电脑,但是例如笔记..
这种情况下的最佳做法是什么?我对报告xlarge的剧本的观察正确吗?
最佳答案
然而,这本剧本似乎欺骗了Android,使它认为这是一个xlarge设备,而大火却没有这么做。
设备制造商可以根据尺寸和密度选择设备放入哪个存储桶。对于RIM和Amazon这样的制造商来说,这是双倍的需求,他们不希望Play商店,因此不必遵守Play商店所规定的任何特定兼容性要求,因此欢迎他们垂听Google的指导。
这种情况下的最佳做法是什么?
我不能告诉你“最好的”。
但是,如果您希望特定设备覆盖某些布局以使用特定大小,这就是我会尝试的方法(假设您将在正常情况下使用的布局称为R.layout.main
):
步骤#1:创建res/layout/main_funky.xml
作为与res/layout-xlarge/main.xml
的符号链接或硬链接(对于-land
等也是如此)。
步骤#2:在Java代码中,无论您引用R.layout.main
(例如,onCreateView()
的Fragment
)在哪里,都要根据R.layout.main
数据决定是加载R.layout.main_funky
还是android.os.Build
来检测这些奇数球设备型号。由于R.layout.main_funky
是您常规的main
布局之一,因此所有依赖于小部件的代码都不受此选择的影响。
步骤#3:在您的特定情况下,将MMPD(魔术Maven小精灵灰尘)添加到步骤#1和#2 ... :-)
我对报告xlarge的剧本的观察正确吗?
我买了一本《 Playbook》,确定RIM的发行模式不...令人不快,并为此做了最少的准备。我没有尝试查看它是否是-large
,-xlarge
或其他。
就是说,NOOK Tablet IIRC受此困扰(声称是-xlarge
而不是-large
)。
我希望Google Nexus平板电脑能够成功实现这一目标,并且能够运行-sw600dp
和亲属都能使用的足够新的Android版本。