我会尽可能地保持精确。 我写了一个应用程序,完整的代码本身并不重要
public void onWindowFocusChanged(boolean hasFocus){
super.onWindowFocusChanged(hasFocus);
if(hasFocus){
globalWidth = mainLayout.getWidth();
refillData();
}
}
它在我的设备上完美运行(sgs2 DarkyROM hd2.1 android版本4.0.3也在基于2.3版本的sgs2上检查它),另一个sgs2与PilotX2.1,它也适用于ASUS Transformer(android v4.2.1) )和许多其他屏幕尺寸不同的设备。 我必须说它具有不同的外观,具体取决于它运行的设备(它动态地构建主要布局,因此如果应用程序正确运行,它真的很值得。)
但在某些设备上它有奇怪的行为。例如在运行Android版本2.3.5的HTC(htc sense 2.1)上,它以某种方式在行getWidth()返回一半或实际屏幕的宽度。或者sgs2 4.2.1 android版本它也会返回奇怪的结果。
我试图查看谷歌和堆栈溢出,以找出是否有任何特定的系统差异,应该考虑对应用程序有这么大的影响,但没有。我不使用任何可由系统开发人员以不同方式实现的设备的特定硬件。
我没有想到的问题是什么?可能是不同的内核会为我的应用程序造成“有问题”的行为吗?我认为它可能是不同的ROM,但我检查了至少6-8个不同的ROM并没有问题。
如果有人熟悉该主题或遇到类似的东西,我甚至很高兴链接到网页。我真的很沮丧。
答案 0 :(得分:0)
也许您可以使用View.makeMeasureSpec
更正您的指标mainLayout.measure(
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
int height = mainLayout.getMeasuredHeight();
int width = mainLayout.getMeasuredWidth();