- 作者:Mr.Egg
- 状态:完成
- 转载请注明
一.十二章
1.什么是MD设计(material design)
Google官方为了解决Android界面统一所提出的设计方案
同时推出了一个Design Support对代表性控件进行封装。
2.Toolbar
这张图是style.xml各颜色属性对应的位置
20150511225554_336.jpg
还有一点是关于右上角菜单问题,在menu中的属性showAsAction
always:永远显示是toolbar中
ifRoom:在空间足够下显示
never:永远显示在菜单中(文字形式)
3.DrawerLayout
滑动菜单,首先他是一个布局,他允许在布局中放入两个直接子控件
第一个是主屏幕内容,第二个是滑动菜单所要显示内容
第二个子控件有一点要注意,layout_gravity必须指定,start是可根据语言判断
如何调用DrawerLayout
ActionBar actionBar = getSupportActionBar(); //获取标题栏
if(actionBar != null){
actionBar.setDisplayHomeAsUpEnable(); //开启左上角滑动菜单按钮
actionBar.setHomeAsUpIndicator(R.drawable.xxx);//设置左上角图标
}
mDrawerLayout.openDrawer(GravityCompat.Start);//开启菜单栏
4.NavigationView
NavigationView是Google为了怕你不会写DrawerLayout所设计出来的.
主要用来填充DrawerLayout的第二个部分.一般推荐高度为180dp,背景色为colorPrimary.
如何把对应布局填充进Navigation
<android.support.design.widget.NavigationView
...
app:menu = "@menu/nax_menu"
app:headerLayout="@layout/nav_header"/>
<!--这两句把 菜单 和 头部的布局联系起来-->
上图(摘自PDF太黑了。。。)
Paste_Image.png5.悬浮按钮和可交互提示
FloatingActionButton和Button差不多,主要注意阴影的使用,同时要配上Snackbar使用更佳.
先上代码,这里我懒着打了。。
设置过后Snackbar会从底部向上弹出,自带动画效果,用户体验也较好。
最重要的是要注意Toast与FloatingActionButton的差别
Toast: 告诉用户发生了什么,用户只能被动接受
FloatingActionButton: 允许在提示中加入一个可交互的按钮,用户能执行一些额外的操作
6.CoordinatorLayout
CoordinatorLayout是一个加强版FrameLayout。同样来自Design Support。
能够监听所以子控件的各种事件
Eg.在点击FloatingActionButton的时候弹出的Snackbar会把FloatingActionButton上移,保证不会被挡住
7.CardView布局
//书上没什么主要内容,我开始瞎BB了.
CardView 卡片视图 顾名思义长得和卡片一样,可以往里面填充内容。
在5.0之后产生,是Google为了Material Design的思想所设计的。主要三点,一个阴影,一个圆角还有一个是与 RecyclerView的搭配使用。
但是要注意,Google说过:信息较多的时候不介意使用,这样会分散用户的注意力。
还有一点,在CardView内只能包含一个子控件
以上,是我个人的总结。
AppbarLayout
内部是一个封装过的垂直LinearLayout,内部做了很多滚动事件的封装。
使用:
把Toolbar放在AppbarLayout里面
然后在RecyclerView中使用app:layout_behavior属性指定布局行为
app:layout_behavior="@string/appbar_scrolling_view_behavior"
当AppBarLayout接受到事件的时候,通过layout_scrollFlags属性实现。
app:layout_scrollFlags="scroll | enterAlways | snap"
scroll: 当RecyclerView向上滚动的时候,一起向上并隐藏
enterAlways : 当RecyclerView向下滚动的时候,一起向下并显示
snap: 根据当前滚动距离,自动选择隐藏还是显示
8.下拉刷新
SwipeRefreshLayout来自于support-v4库,Google官方提供的Material Design类型的控件。
使用:只要将需要下拉刷新的控件(RecyclerView)外面嵌一层SwipeRefreshLayout就可以了。
同时也要将layout_behavior="xxxx"移到SwipeRefreshLayout中。
几个常用方法:
setColorSchemeResources() 用于设置下拉刷新进度条颜色
setRefreshing() 用于设置下拉刷新的状态
setOnRefreshListener() 用于设置下拉刷新的监听器
网友评论