我正在以纵向模式运行应用程序。现在我想在全屏,风景模式中打开一个意图,并且需要获得风景模式的高度和宽度。
以下是代码。
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Display disp = getWindowManager().getDefaultDisplay();
Log.i("Width: " + disp.getWidth() + ", Height: " + disp.getHeight());
一切正常,就像屏幕在全屏模式下打开一样,横向模式也正常。但我只获得了纵向模式的高度和宽度参数。
如果我在横向模式下运行应用程序,那么我的高度和宽度都是正确的 对于相同的代码。
如何解决这个问题?
答案 0 :(得分:0)
这是因为setRequestedOrientation需要一些时间才能生效。您可以使用代码在onRestart()/ onResume中显示。
更改此活动的所需方向。如果活动当前处于前台或以其他方式影响屏幕方向,则将立即更改屏幕(可能导致重新启动活动)。否则,这将在下次活动可见时使用。
答案 1 :(得分:0)
使用以下方法获取屏幕的宽度和高度
WindowManager windowManager = (WindowManager) activity.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
int height = windowManager.getDefaultDisplay().getHeight();
int width = windowManager.getDefaultDisplay().getWidth();