先介绍Android 5.X之后出现的Design meterial的新控件使用design包下的控件必须先导包  

compile 'com.android.support:design:24.0.0'

CoordinatorLayout作为“super-powered FrameLayout”本质是个帧布局FrameLayout

基本实现两个功能: 
1、作为顶层布局;   其子控件可以通过layout_gravity控制自身位置
2、调度协调子布局.

CoordinatorLayout使用新的思路通过协调调度子布局的形式实现触摸影响布局
的形式产生动画效果。CoordinatorLayout通过设置子View的Behaviors来调
app:layout_scrollFlags
<?xml version="1.0" encoding="utf-8"?>
<!--CoordinatorLayout本质是个FrameLayout-->
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"

    tools:context="xixirupan.tmgp.com.newdesign.MainActivity">
  <!--  android:fitsSystemWindows="true"必须加上否则toolbar名称设置不上
  AppBarLayout本质是一个LinearLayout vertical
  -->
    <android.support.design.widget.AppBarLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
       android:fitsSystemWindows="true"
      >
        <!-- layout_scrollFlags是AppBar需要滚动的子元素设置的属性
        有四个值exitUntilCollapse,enterAlaways,enterAlwaysUtilCollapse scroll
        要想实现滚动scroll必加 其他三个可以根据需要的效果选择
        CollapsingToolbarLayout通常只包裹TooLbar
        有时候也包裹一张图片作为Toolbar的背景图片 造成一定的视觉效果
        CollapsingToolbarLayout本质也是一个FrameLayout
        -->
    <android.support.design.widget.CollapsingToolbarLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:background="#66ff0000"
        app:contentScrim="#6600ff00"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"

        >
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/agin7"
            />
        <!--Toolbar的高必须设置明确的值否则就不会收缩在上面
        原因我想很简单就是toolbar没有明确高不知道该收缩多少这样的话系统将什么也不做
        -->
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            app:title=" "
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin"

            >

        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.CollapsingToolbarLayout>
  <android.support.design.widget.TabLayout
      android:id="@+id/tabLayout"
      android:layout_width="match_parent"
      android:layout_height="wrap_content">

  </android.support.design.widget.TabLayout>
</android.support.design.widget.AppBarLayout>
    <!--app:layout_behavior="@string/appbar_scrolling_view_behavior"
     该属性是CoordinatorLayout中的需要滚动的子元素设置的属性
    -->
<android.support.v4.widget.NestedScrollView
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <xixirupan.tmgp.com.newdesign.view.NoListView
        android:id="@+id/noListView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:entries="@array/items"
        >
    </xixirupan.tmgp.com.newdesign.view.NoListView>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

public class NoListView extends ListView {
    public NoListView(Context context) {
        super(context);
    }

    public NoListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public NoListView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}
app:cardElevation
app:cardMaxElevation
app:cardBackgroundColor
app:cardCornerRadius
app:contentPadding
app:cardUseCompatPadding
app:cardPreventConrerOverlap
compile 'com.android.support:cardview-v7:24.0.0'
<android.support.v7.widget.CardView ... android:clickable="true" android:foreground="?android:attr/selectableItemBackground"> ... </android.support.v7.widget.CardView>
DrawerLayout内部.
1⃣️.app:headerLayout
2⃣️.app:menu
setNavigationItemSelectedListener
OnNavigationItemSelectedListener
MenuItem
onOptionsItemSelected
mNavigationView.setNavigationItemSelectedListener(new 
@OverridepublicbooleanonNavigationItemSelected(MenuItem menuItem){

   
menuItem.setChecked(true);// 改变item选中状态

   
            currentNavigationId = menuItem.getItemId();

returntrue;

        } else {

returnfalse;
        }
    }
});



<--正常状态下字体颜色和icon颜色-->
<item name="android:textColorPrimary">@android:color/darker_gray</item>
<--选中状态icon的颜色和字体颜色-->
<item name="colorPrimary">@color/accent_material_light</item>

         app:itemBackground.

    2⃣️.setItemIconTintList(ColorStateList):给menu的icon设置颜色,对应的属
         性app:itemIconTint.

    3⃣️.setItemTextColor(ColorStateList):给menu的item设置字体颜色,对应的属性
         app:itemTextColor.