2013-03-27 105 views
0

我会尽可能地精确。 我写了一个应用程序,完整的代码本身并不重要同一个应用程序在同一设备上的不同行为

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系统)上,另一个与PilotX2.1 sgs2,它也适用于华硕变压器(Android v4.2.1)和许多其他设备不同的屏幕尺寸。 我必须说它具有不同的外观,具体取决于它运行的是什么设备(它动态构建主布局,所以如果应用程序正常运行,它的确非常值得注意)。

但在某些设备上它有奇怪的行为。例如,在HTC(htc sense 2.1)上运行android版本2.3.5,它在getWidth()函数中返回一半或实际屏幕宽度。或者sgs2 4.2.1 android版本也会返回奇怪的结果。

我试图在谷歌和堆栈溢出查找有没有任何具体的系统差异,应该考虑这对应用程序有如此大的影响,但没有。我不使用系统开发人员可能以不同方式实现的任何设备的特定硬件。

我没有记住什么问题?可能是不同的内核对我的应用程序产生了“有问题”的行为?我认为它可能是不同的ROM,但我检查了至少6-8个不同的ROM,并没有问题。

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

回答

0

也许你可以通过使用View.makeMeasureSpec

mainLayout.measure(
     MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
     MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 

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

日Thnx纠正你的措施,我会检查它的明天。 – user1927829 2013-03-27 19:41:07

+0

这没有奏效。它甚至做出了一些奇怪的行为。将此代码放在mainLayout.measure( MeasureSpec.makeMeasureSpec(0,MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0,MeasureSpec.UNSPECIFIED));'给出非常奇怪的结果。 – user1927829 2013-04-06 10:13:47

相关问题