第十二章:最佳的UI体验,Material Design实战
什么是Material Design
为了保证界面美观,风格统一,Google 在2014年的IO大会上推出了Material Design,并从Android 5.0系统开始,将内置应用全部使用Material Design风格进行设计。
Toolbar
Toolbar是代替ActionBar用作标题栏,它继承了后者的全部功能,而且可以配合其他控件完成一些Material Design的操作。
标题栏的内容在注册文件的android:label标签下。
滑动菜单
DrawerLayout 抽屉布局
该布局允许放入两个直接子控件,第一个是主屏幕显示的内容,第二个是滑动菜单中显示的内容。
NavigationView 导航视图
该控件可用来实现滑动菜单界面,它可以放入显示头部布局的headerLayout和显示具体菜单项的menu。
悬浮按钮和可交互提示
FloatingActionButton 悬浮按钮
该控件用来实现悬浮按钮的效果。
SnackBar 快餐厅
该工具用来实现可交互提示,它不是Toast的替代品。Toast告诉用户发生了什么事情,用户只能被动接受,而它允许在提示中加入一个可交互按钮,当用户点击按钮的时候,可以执行一些额外的逻辑操作。
CoordinatorLayout 协调器布局
该布局是加强版的帧布局,普通情况下作用于帧布局基本一致,但它可以监听其所有子控件的各种事件,并自动帮助我们做出最为合理的相应。如弹出的SnackBar挡住FloatingActionButton时,它会协调悬浮按钮上移,避免被挡住。
卡片式布局
MaterialCardView
该控件是用来实现卡片式布局效果的重要控件,它其实也是一个帧布局,只是额外提供了圆角和阴影的效果。
Glide
它是一个强大的开源图片加载库,在用法简单的基础上,可以用于加载本地图片、网络图片、GIF图片、本地视频等。尤其是当图片像素过高,如果不压缩直接展示容易发生内存溢出,使用Glide就可以帮助我们自动完成压缩操作。
AppBarLayout 应用程序栏布局
ToolBar被遮挡时,将其嵌套进该布局中,并给RecyclerView指定一个布局行为,如appbar_scrolling_view_behavior。
当AppBarLayout接收到滚动事件的时候,它内部的子控件还可以指定如何去影响这些事件。如向ToolBar中添加app:layout_srollFlags属性。
app:layout_scrollFlags="scroll|enterAlways|snap"
//向上滚动时隐藏、
//向下滚动时显示、
//没有完全隐藏或显示时根据滚动距离自动选择隐藏还是显示
下拉刷新
SwipeRefreshLayout 刷新布局
该布局内的控件会拥有刷新功能。之后在代码中完善刷新逻辑即可。
可折叠式标题栏
CollapsiongToolbarLayout 折叠工具栏布局
该布局作用于Toolbar之上。
NestedScrollView
它不仅可以实现和ScrollView同样的以滚动方式查看屏幕外数据的功能,还增加了嵌套相应滚动事件的功能。
充分利用系统状态栏空间
Android 5.0之前我们无法操作状态栏的背景或颜色,之后都支持这个功能。
将程序主题中状态栏颜色指定为透明,而后在 CoordinatorLayout 、AppBarLayout 、CollapsiongToolbarLayout 这种嵌套结构的布局中指定android:fitsSystemWindows属性为true