相同应用程序在同一设备上的不同行为

时间:2013-03-27 16:49:02

标签: android

我会尽可能地保持精确。 我写了一个应用程序,完整的代码本身并不重要

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并没有问题。

如果有人熟悉该主题或遇到类似的东西,我甚至很高兴链接到网页。我真的很沮丧。

1 个答案:

答案 0 :(得分:0)

也许您可以使用View.makeMeasureSpec

更正您的指标
mainLayout.measure(
        MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
        MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

int height = mainLayout.getMeasuredHeight();
int width = mainLayout.getMeasuredWidth();