沉浸式体验
首先别吐槽沉浸式
这个名词吧,毕竟这各名字是广为人知并且比透明状态栏加透明导航栏
更酷。充分使用整个屏幕将这2个系统视图融入自己APP也算沉浸式体验吧。
首先2个名词:
StatusBar:
NavigationBar:
下面是Google的官方标准模版:
在官方示例中:
StatusBar是一个半透明阴影,View可以伸展到其后面。
NavigationBar是纯黑不能使用的。
Google提供NavigationBar的透明与使用的可能,却没有推荐使用。个人觉得是为了给
Bottom navigation
做准备。这里不讨论Bottom navigation的优劣(我是Bottom navigation黑)。
下面是B站的:
不可否认使用NavigationBar空间对多下巴手机是种拯救。
(Google自己推的虚拟按键,却自己放弃了屏占比这一大优势。)
好了,B站的UI就是我所期望的UI。下面我们就来实现它。
style的配置
android从4.4开始,开始支持UI使用StatusBar与NavigationBar的范围。
所以要进行下面的配置:
在value中的styles.xml中设置
1 2 3 4 5 |
<!-- Base application theme. --> <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> </style> <style name="AppTheme" parent="AppTheme.Base"></style> |
在value-v19中的styles.xml中设置(为了兼容4.4)
1 2 3 4 |
<style name="AppTheme" parent="AppTheme.Base"> <item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">true</item> </style> |
1 2 3 4 5 6 7 8 |
<style name="AppTheme" parent="AppTheme.Base"> <!--透明状态栏--> <item name="android:windowTranslucentStatus">true</item> <!--透明导航栏--> <item name="android:windowTranslucentNavigation">true</item> <!--使状态栏,导航栏可绘制--> <item name="android:windowDrawsSystemBarBackgrounds">true</item> </style> |
然后使用AppTheme这个主题,这是1个示例,应该看得出来吧。只要在你的AppTheme的v19版本和v21版本添加了相应属性就好。
使用ToolBar
当你使用了StatusBar的部分,就不要再使用ActionBar了。
现在基本都会使用ToolBar了吧。还不会可以参考 ToolBar的使用
然后效果如下:
然后这里就有2个问题:
1. Toolbar到了StatusBar的下面(为了凸显问题给Toolbar设了颜色)
2. View在NavigationBar下难以点击
这2个问题也是理所应当就应该存在的。
解决方法:
FitSystemWindowLayout
这里就先说结果吧,使用FitSystemWindowLayout,我为此做了很多适配工作。
这是标准界面:
这个库提供自动适应StatusBar与NavigationBar的几个Layout。在XML中设置即可。
这是上面标准UI的XML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
<?xml version="1.0" encoding="utf-8"?> <com.jude.fitsystemwindowlayout.FitSystemWindowsFrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" app:padding_status="false"//不自动腾出StatusBar的空间,为了让图片在StatusBar下绘制 tools:context="com.jude.demo.MainActivity"> //这个ViewPager里面放的ImageView <com.jude.rollviewpager.RollPagerView android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="300dp" app:rollviewpager_play_delay="3000"/> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="ayon-o">:id="@+id/toolbar" android:layout_width=" 02c8923cb37b6.png">
NavigationBar: 下面是Google的官方标准模版: 在官方示例中: Google提供NavigationBar的透明与使用的可能,却没有推荐使用。个人觉得是为了给 Bottom navigation 下面是B站的: 不可否认使用NavigationBar空间对多下巴手机是种拯救。 好了,B站的UI就是我所期望的UI。下面我们就来实现它。 style的配置android从4.4开始,开始支持UI使用StatusBar与NavigationBar的范围。 在value中的styles.xml中设置
在value-v19中的styles.xml中设置(为了兼容4.4)
在value-v21中的styles.xml中设置
然后使用AppTheme这个主题,这是1个示例,应该看得出来吧。只要在你的AppTheme的v19版本和v21版本添加了相应属性就好。 使用ToolBar当你使用了StatusBar的部分,就不要再使用ActionBar了。 然后效果如下: 然后这里就有2个问题: 1. Toolbar到了StatusBar的下面(为了凸显问题给Toolbar设了颜色) 这2个问题也是理所应当就应该存在的。 FitSystemWindowLayout这里就先说结果吧,使用FitSystemWindowLayout,我为此做了很多适配工作。 这个库提供自动适应StatusBar与NavigationBar的几个Layout。在XML中设置即可。
|