android屏幕方向混淆
我的android应用程序是专为景观设计的。我把android屏幕方向混淆,android,screen-orientation,Android,Screen Orientation,我的android应用程序是专为景观设计的。我把 android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden|screenSize" 进入舱单。 而且它确实是以景观为导向的。这很酷。 但是 我需要知道设备屏幕的大小来执行一些计算。我在onCreate()中添加了以下代码: 如果我从纵向启动应用程序,我会得到(谷歌Nexus)大小。x=800,大小。
android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden|screenSize"
进入舱单。
而且它确实是以景观为导向的。这很酷。
但是
我需要知道设备屏幕的大小来执行一些计算。我在onCreate()
中添加了以下代码:
如果我从纵向启动应用程序,我会得到(谷歌Nexus)大小。x=800,大小。y=1205,而不是正确的(横向)大小。x=1280,大小。y=736
在我看来,Android需要一些时间从纵向切换到横向(因为最终我看到我的应用程序“景观”)。但是在这个开关之前调用了onCreate
,它破坏了我的计算。我的猜测正确吗
我尝试将计算从onCreate()
移动到onGlobalLayout()
,但经过以下步骤后,我仍然得到了纵向尺寸:
,int,int,int,int)我花了好几天的时间研究这个问题。正如其他海报所揭示的那样,当从睡眠/锁定屏幕返回时,该应用程序将获得与锁定屏幕相同的肖像模式。真正的发现是它经过了onResume()和onWindowFocusChanged两次-一次是纵向模式,然后是横向模式。在执行屏幕初始化之前,我在onResume()和onWindowFocusChanged()中使用了以下代码进行检查:
int gW = view.getMeasuredWidth();
int gH = view.getMeasuredHeight();
if (gW > gH) {// landscape!
// the height will be set at this point
// so reinitialize your screen here
}
它帮助了我。希望这对你有帮助 我无法复制这个问题。在我的Nexus 4上,活动锁定为横向,getSize()返回1196x768,即1280减去导航栏的大小。你还做了什么不寻常的事吗,也许打电话吧?我也没看到从肖像画到风景画的转变。在清单中指定方向时不应发生这种情况。@devconsole它可以像这样复制:1。使设备睡眠2。保持“肖像”3。从eclipse启动应用程序->解锁屏幕显示4。解锁你的设备5。观察size.x
android:configChanges
(请参阅相关内容)。在这种情况下,我无法获得第二个具有“正确”维度的onCreate。至于“学术”——猜猜如果用户直接从GooglePlay在肖像定位中启动我的应用会发生什么
int gW = view.getMeasuredWidth();
int gH = view.getMeasuredHeight();
if (gW > gH) {// landscape!
// the height will be set at this point
// so reinitialize your screen here
}