compile 'com.android.support:design:24.2.1'
compile 'de.hdodenhof:circleimageview:2.1.0'
compile 'com.android.support:recyclerview-v7:24.2.1'
compile 'com.android.support:cardview-v7:24.2.1'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile'com.squareup.okhttp3:okhttp:3.4.1'
侧面菜单
然后为了为他添加内容,在menu文件夹下添加上xml布局文件。
DrawerLayout
这个就是我们的滑动菜单了,就是能将一部分菜单隐藏起来。下面是具体的java代码:
mDrawerLayout=(DrawerLayout)findViewById(R.id.drawer_layout);
NavigationView navigationView=(NavigationView) findViewById(R.id.nav_view);//添加上具体的菜单
而要使用TooLbar里面的点击事件,需要重写方法:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case android.R.id.home:
mDrawerLayout.openDrawer(GravityCompat.START);
break;
NavagationView
上面的single代表所有菜单项只能够单选。
当点击菜单项任何选项时,需要重写
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener(){
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
mDrawerLayout.closeDrawers();
return true;
}
});
再这里写上自己需要点击的功能。
FloatingActionButton悬浮按钮
使用方式:
它的点击事件和普通的Button没有什么太大的不同。
Snackbar更加先进的提示工具
它的用法类似与Toast,不过可以增加一个按钮的点击事件,
使用方法:
Snackbar.make(v,"删除信息",Snackbar.LENGTH_SHORT).setAction("Undo", new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"要删除吗",Toast.LENGTH_SHORT).show();
}
})
.show();
CoordinatorLayout升级版的FrameLayout
可以监听所有子控件的各种事件,使用方法就是可以直接把FrameLayout替换掉,能够让布局自动适应。
CardView卡片式布局
这是一个没有定位方式的布局,所以一般需要在里面给这个控件嵌套一个LinerLayout。
最后,就是显示数据了。
RecyclerView recyclerView=(RecyclerView) findViewById(R.id.recycler);
GridLayoutManager layoutManager=new GridLayoutManager(this,2);
recyclerView.setLayoutManager(layoutManager);
adapter=new FruitAdapter(fruitList);
recyclerView.setAdapter(adapter);
使用的是GridLayoutManager布局方式。
AppBarLayout
其实到现在为止,Recycler会把Toolbar给遮挡住的,这里这个是一个垂直的LinerLayout,做了很多的滚动处理的,记得让Recyclerview指定动作。
app:headerLayout="@layout/nav_header"
而真正体现material design的是
app:layout_scrollFlags="scroll|enterAlways|snap"
表示标题向上滚动就隐藏,向下拉就显示。
最后一步,Activity中
刷新功能的代码
refreshLayout=(SwipeRefreshLayout) findViewById(R.id.swip_refresh);
refreshLayout.setColorSchemeResources(R.color.colorPrimary);//设置进度条颜色
refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener(){
public void onRefresh(){
refreshFruits();
}
});
下面是具体的监听事件:
private void refreshFruits(){
new Thread(new Runnable() {
@Override
public void run() {
try{
Thread.sleep(2000);
}catch (InterruptedException e){
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
initFruits();
adapter.notifyDataSetChanged();
refreshLayout.setRefreshing(false);
}
});
}
}).start();
}