Material Design

1.CoordinateLayout

继承ViewGroup,通过协调并调度里面的子控件或者布局来实现触摸(一般是指滑动)产生相关的动画效果。可以通过设置View的Behavior来实现触摸的动画调度。
CoordinateLayout里面的所有子控件都可以监听触摸事件。

2.RecyclerView

2.1.监听滑动事件

继承 RecyclerView.OnScrollListener 并实现 onScrolled
/**
 * 
 * @param recyclerView
 * @param dx
 * @param dy  Y轴变化差值,向上滑为正,向下为负。
 */
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        
}

2.2.属性

android:clipToPadding="false"  //toolbar下面的RecyclerView透明
android:clipChildren="false"  //是否限制子View在其范围内,默认为true
android:layout_height="?/attr/actionBarSize" 获取ActionBar的高度

2.3.添加头部和底部

3.沉浸式(translucent)设计

官方:让整个App沉浸(充斥)在整个屏幕,没有状态栏,设置没有显示底部导航栏。
民间:Toolbar和状态栏一体颜色。

3.1.ToolBar设置沉浸式

3.1.1.Android5.x设置沉浸式

第一种:
1.App主题继承
Theme.AppCompat.DayNight.NoActionBar
2.在App主题里面添加colorPrimaryDark属性设置主题颜色
@color/colorPrimaryDark
第二种:通过代码设置
getWindow().setStatusBarColor(getColor(R.color.colorAccent));
第三种:通过navigationBarColor设置
#colorAccent

3.1.2.Android4.4以上设置沉浸式

设置状态栏为透明
第一种:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
在setContentView之前添加。原因:window --> PhoneWindow(线性布局,状态栏和Activity) , 所以在渲染activity布局之前添加一个flag,让渲染的时候设置为透明,如果放在setContentView之后,则不起效果。 

状态栏会遮挡一些UI界面

//设置布局时,是否考虑当前系统窗口布局,true,调整整个系统窗口布局(状态栏View),以适应你的布局。
android:fitsSystemWindows="true" 

3.2.导航栏(NavigationBar)沉浸式

3.2.1.Android5.x设置沉浸式

第一种:
属性解决
#000000
第二种:
代码解决
状态栏属于系统UI,所以要放在setContentView之前
getWindow().setNavigationBarColor();

杂技

1.LayerList,多个图层的叠加

你可能感兴趣的:(Material Design)