【发布时间】:2011-10-12 14:06:39
【问题描述】:
我在相当快地改变屏幕方向或背景上有重物时遇到了奇怪的问题。当我在onConfigurationChanged 上调用setContentView(R.layout.main);(我自己处理方向更改)时,在屏幕旋转一会儿后,android 将布局设置为与方向相反。例如 - 当你改变方向布局时,像这样 Portrait>Landscape,但有时,在我的情况下,它会像这样 Portrait>Portrait(当手机已经处于横向位置时)>风景。
有时您甚至没有注意到这一点,有时屏幕会在一秒钟内缩小到大约 1/3。
好吧,这并不是什么大不了的事,但在我的活动中,我有 Coverflow 小部件(基于 Gallery),为了使它在大多数屏幕上看起来不错,我根据父容器大小设置图像大小(在小部件的 onSizeChanged 中) ,并且当方向发生如上所述的变化时,coverflow 小部件选择了错误尺寸。
我现在看到的唯一方法是在方向更改时调用 onCreate(我不能这样做,因为在线填充了繁重的 UI),或者在初始化 UI 时设置延迟(这很难看)。
所以我想知道,是否有任何回调 setContentView() 或其他任何东西,所以我可以知道布局何时真正准备好,以便我可以初始化 UI。
或者也许还有其他方法?
PS:由于某种原因,这种故障主要发生在 Desire HD 上。
【问题讨论】:
-
我想我在这里看到了同样的事情,这个简单的测试应用说明了这一点:Why does onLayout and onSizeChanged get called twice on an orientation change?
标签: android orientation screen-orientation device-orientation orientation-changes