有layout和没有layout区别:https://blog.csdn.net/u010389391/article/details/53007706
游戏或影视状态:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION|
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_FULLSCREEN|View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
一般app状态:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE|View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
//将状态栏颜色设为透明
activity. getWindow().setStatusBarColor(Color.TRANSPARENT);
//隐藏标题栏可以 getSupportActionBar().hide();或者在menifest设置主题
封装沉浸式转态栏的方法:
在framework模块的utils包下创建SystemUITils类,创建静态方法
public class SystemUIUtils {
public static void fixSystemUI(Activity activity){
//如果运行apk的安卓系统的版本大雨或等于棒棒糖版本就执行,Build.VERSION.SDK_INT是获取当前系统版本
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){
//获取最顶层的View
//View.SYSTEM_UI_FLAG_FULLSCREEN少状态栏,标题栏还是有的。
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE|View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
//将状态栏颜色设为透明
activity. getWindow().setStatusBarColor(Color.TRANSPARENT);
//隐藏标题栏可以 getSupportActionBar().hide();或者在menifest设置主题
}
}
}
在framework模块下创建base包,创建BaseUIActivity类继承AppCompact重写onCreate方法
public class BaseUIActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SystemUIUtils.fixSystemUI(this);
}
}
在Activity引入自定义没有标题的主题AppThemeFull;
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppThemeFull" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
</style>
</resources>
在Menifest中对应是Activity引入主题;
<activity android:name="UI.GuideActivity" android:theme="@style/AppThemeFull" />
将MainActivity继承baseUIActivity.在mainActivity引入frameworkModel,在app的gradle添加依赖。
效果: