全屏适配
全面屏适配分为javascript
-
沉浸式适配java
沉浸式适配是指:将画面延展到 状态栏 或者 改变状态栏,把状态栏颜色改为和app相近的颜色。android
-
刘海适配api
刘海适配是指:刘海部分的处理。app
适配沉浸式
隐藏actionbar 更改 statusbar 颜色
<style name="thememe" parent="Theme.AppCompat.NoActionBar"> <item name="android:statusBarColor">@android:color/holo_blue_bright</item> </style> 主题继承一个 noacitonbar 主题 idtem 添加一个statusbarcolor 此处设置透明,则为黑色。 若是设置为红色则为红色
隐藏actionbar statusbar透明
隐藏actionbar 隐藏statusbar 其中,单独设置statusbar透明是不起做用的。须要加上windowTranslucentStatus 此时状态栏是透明了,可是状态栏没有隐藏,只是透明了,而且布局往上移。此时若是想沉浸式,解决方案能够在本身布局添加一个statusbar高的底色布局 <style name="thememe1" parent="Theme.AppCompat.NoActionBar"> <!-- 设置statusBarColor 为透明 单独设置statusbar透明是不起做用的,此处透明会使布局往上移--> <item name="android:windowTranslucentStatus">true</item> <item name="android:statusBarColor">@android:color/transparent</item> </style>
隐藏actionbar 隐藏statusbar 底部导航栏透明(不建议直接使用)
隐藏actionbar 隐藏statusbar 底部导航栏透明 不建议直接使用 <style name="thememe2" parent="Theme.AppCompat.NoActionBar"> <!-- 设置底部导航栏为透明 且导航栏会遮住布局 --> <item name="android:windowTranslucentNavigation">true</item> <!-- 设置statusBarColor 为透明 单独设置statusbar透明是不起做用的,此处透明会使布局往上移--> <item name="android:windowTranslucentStatus">true</item> <item name="android:statusBarColor">@android:color/transparent</item> </style>
隐藏actionbar 隐藏statusbar 全屏显示
隐藏actionbar 隐藏statusbar 底部导航栏透明 <style name="thememe2" parent="Theme.AppCompat.NoActionBar"> <!-- 设置底部导航栏为透明 且导航栏会遮住布局 --> <item name="android:windowTranslucentNavigation">true</item> <!-- 设置statusBarColor 为透明 单独设置statusbar透明是不起做用的,此处透明会使布局往上移--> <item name="android:windowTranslucentStatus">true</item> <item name="android:statusBarColor">@android:color/transparent</item> </style> **代码设置属性,在setcontentview后面调用** protected void hideBottomUIMenu1(){ //隐藏虚拟按键,而且全屏 Toast.makeText(this,"api dayu 19",Toast.LENGTH_SHORT).show(); //for new api versions. View decorView = getWindow().getDecorView(); int uiOptions = 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 // hide nav bar 隐藏导航栏 | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 全屏 即隐藏电量 状态栏.可是刘海屏有黑边,须要配合安卓10属性 | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY//拉出来,几秒不操做本身弹回去 | View.SYSTEM_UI_FLAG_IMMERSIVE//拉出来,不会本身回去 ; decorView.setSystemUiVisibility(uiOptions); }
其中==注意==几个属性值的效果变化,IMMERSIVE 和 IMMERSIVE_STICKY 一个拉出底部导航栏,过几秒会缩回去,一个不会。ide
刘海适配
上面的沉浸式适配,在有刘海的全面屏下是有瑕疵的,当全屏显示,状态栏部分会变成一条黑色。 若是app是游戏来讲是不太友好的 试了不少属性,若是隐藏电量显示,刘海部分就为黑色,若是不隐藏,又不美观。布局
在安卓大于等于28 10.0的系统上,有了适配刘海的新的api能够解决这个问题。ui
protected void hideBottomUIMenu2(){ //隐藏虚拟按键,而且全屏 if (Build.VERSION.SDK_INT >= 28) { Toast.makeText(this,"api dayu 28",Toast.LENGTH_SHORT).show(); //for new api versions. View decorView = getWindow().getDecorView(); int uiOptions = 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 // hide nav bar 隐藏导航栏 | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 全屏 即隐藏电量 状态栏.可是刘海屏有黑边,须要配合安卓10属性 | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY //拉出来,几秒不操做本身弹回去 ; decorView.setSystemUiVisibility(uiOptions); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;//新属性,能将全屏的刘海部分黑边去掉,同时这个有三个模式,能够参考文档 } }