关于activity的全屏显示


一般情况下,我们实现activity的全屏显示,可以在manifest里直接设置属性

android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"

这一般情况下并不能完全实现全屏显示,状态栏跟导航栏可能还遮挡不住。

要真正实现全屏,一般是在oncreat或者onresume里设置以下flag参数。

也叫沉浸式全屏,在游戏或者视频类页面是必须要实现沉浸式的

参数设置:

 
private void setScreenArrts() {
if (android.os.Build.VERSION.SDK_INT < 14) {
return;
}
try {
SinkLog.i(TAG, "setScreenArrts HIDE_NAVIGATION");
//设置这些参数,有可能谁弹出系统提示“从顶部往下退出全屏模式”
mActivity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
} catch (Exception e) {
SinkLog.w(TAG, e);
}
}
或者
private void setPuppyScreenArrts() {
if (android.os.Build.VERSION.SDK_INT < 14) {
return;
}
try {
SinkLog.i(TAG, "setPuppyScreenArrts HIDE_NAVIGATION");
mActivity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
mActivity.getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
SinkLog.i(TAG, "setPuppyScreenArrts ---");
mActivity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
mActivity.getWindow().getDecorView().requestFocus();
}
});
} catch (Exception e) {
SinkLog.w(TAG, e);
}
}

这样的效果只能在android5.0以上的系统才能支持

 

问题总结:

1、这个写全屏属性在android14及以上才能用。

2、在android6以上系统,应用需要设置targetSdkVersion=24以上才能生效

我遇到的问题是,同一个应用,在android6可以全屏,在android8不行,单独写demo看,这写参数设置应该都是正确的,demo在两个设备都生效,最后才发现,demo都targetSdkVersion=28

 

参考

https://blog.csdn.net/guolin_blog/article/details/51763825


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM