我的Android应用程序设计为仅景观。我已经把
了 android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden|screenSize"
进入清单。
它确实以横向方向发布。这太酷了。
但!
我需要知道设备屏幕大小才能执行一些计算。我已将以下代码添加到onCreate()
:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
// utilize size to calculate something...
如果我从纵向启动应用程序,我得到(Google Nexus)size.x = 800,size.y = 1205而不是正确(对于横向)size.x = 1280,size.y = 736。
对我来说,Android需要一些时间才能从纵向切换到横向(因为最终我看到我的应用程序“美化了”)。但是在此切换之前调用onCreate
- 它会导致我的计算失败。我的猜测是否正确?
我尝试将计算从onCreate()
移到onGlobalLayout()
但我仍然按照以下步骤获得了纵向尺寸:
我可以完全摆脱纵向吗?
答案 0 :(得分:2)
我花了好几天同样的问题。正如其他海报所揭示的那样,当从睡眠/锁定屏幕返回时,应用程序被传递到锁定屏幕所具有的相同纵向模式。真正的发现是它经历了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
}
它帮助了我。希望这对你有所帮助。
答案 1 :(得分:0)
不,你不能。
如果您想获得视图大小,可以覆盖onLayout http://developer.android.com/reference/android/view/View.html#onLayout(boolean,int,int,int,int)