我会尽可能的精确。我写了一个应用程序,完整的代码本身并不重要
public void onWindowFocusChanged(boolean hasFocus){
super.onWindowFocusChanged(hasFocus);
if(hasFocus){
globalWidth = mainLayout.getWidth();
refillData();
}
}它完美地工作在我的设备(sgs2 DarkyROM hd2.1安卓版本4.0.3也检查了基于系统的2.3版本的sgs2),另一个sgs2与PilotX2.1,它也可以在华硕变压器(安卓v4.2.1)和许多其他设备与不同的屏幕尺寸。我必须说,它有不同的外观取决于它运行的设备(它动态地构建主布局,所以如果应用程序运行正确或不正确,这是非常值得注意的)。
但在一些设备上,它有奇怪的行为。例如,在运行安卓2.3.5版本的HTC (htc sense 2.1)上,它不知何故在行getWidth()返回半个屏幕宽度或实际屏幕宽度。或者sgs2 4.2.1的安卓版本,它也会返回奇怪的结果。
我试图在google和堆栈溢出中查找,以找出是否有任何特定的系统差异应该被考虑,这些差异对应用程序有如此大的影响,但什么都没有。我没有使用任何类型的设备的特定硬件,可以由系统的开发人员以不同的方式实现。
我没有考虑到的问题是什么?会不会是不同的内核使得我的应用程序的行为“有问题”?我认为这可能是不同的ROM,但我检查了至少6-8个不同的ROM,没有问题。
如果任何人熟悉这个主题或遇到类似的东西,我甚至会很高兴有一个网页的链接。我真的很沮丧。
发布于 2013-03-28 00:58:26
也许你可以通过使用View.makeMeasureSpec来纠正你的测量结果
mainLayout.measure(
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
int height = mainLayout.getMeasuredHeight();
int width = mainLayout.getMeasuredWidth();https://stackoverflow.com/questions/15664588
复制相似问题