Android 横屏应用开发如何隐藏左边黑色边缘

最近公司开发一个横屏应用的项目,Phone和Pad一套代码编译,需要考虑到全局横屏状态下的应用,起初竖屏的时候代码是没问题的,可是到切换横屏遇到了黑边问题,先来看看竖屏的时候怎么写的

setContentView之前设置
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(Color.TRANSPARENT);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

看效果:
Android 横屏应用开发如何隐藏左边黑色边缘_第1张图片左边出现一条让人意想不到的黑边效果,当然这肯定不是我们要的效果,修改:

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(Color.TRANSPARENT);
WindowManager.LayoutParams attributes = getWindow().getAttributes();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
     attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
     getWindow().setAttributes(attributes);
}
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

再来看效果:
Android 横屏应用开发如何隐藏左边黑色边缘_第2张图片黑边没有了,效果达到预期!

你可能感兴趣的:(android)