学习Material Design总结(一)

使用的库

  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'

侧面菜单
学习Material Design总结(一)_第1张图片
然后为了为他添加内容,在menu文件夹下添加上xml布局文件。
学习Material Design总结(一)_第2张图片

学习Material Design总结(一)_第3张图片
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"

表示标题向上滚动就隐藏,向下拉就显示。

而下拉刷新效果使用的是SwipeRefreshLayout

  
    
    

最后一步,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();
    }

你可能感兴趣的:(学习Material Design总结(一))