首先导入 implementation 'com.android.support:design:28.0.0' implementation 'de.hdodenhof:circleimageview:2.1.0'
第一个是抽屉,第二个是圆形图片

创建nav_header.xml
这个作为抽屉的上部分

<?xml version="1.0" encoding="utf-8"?>                


新建menu文件夹,在该文件夹下,创建 nav_menu.xml 作为抽屉的下部分。

                

创建activity_main.xml
NavigationView一定要放在所有控件的最下面,否则点击事件可能会被屏蔽掉

<?xml version="1.0" encoding="utf-8"?>                        


给抽屉加了名字:drawerlayout,java绑定时有用,一般情况下抽屉不显示出来。加了一个圆形图片,点击图片后可抽出抽屉
app:menu="@menu/nav_menu"这句是通过xml文件把nav_menu加入到抽屉的下半部分。
上半部分的nav_header用的是java文件加入到抽屉的上半部分

MainActivity.java

package cn.edu.neusfoft.notes_drawerlayout;import android.support.annotation.NonNull;import android.support.design.widget.NavigationView;import android.support.v4.widget.DrawerLayout;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.Gravity;import android.view.MenuItem;import android.view.View;import android.widget.Toast;import de.hdodenhof.circleimageview.CircleImageView;public class MainActivity extends AppCompatActivity {    NavigationView navigationView;    CircleImageView cat,kevin;//点击cat图片拉出抽屉,点击kevin,触发事件    DrawerLayout drawerLayout;//抽屉    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //将各个对象与xml文件中的id对应,绑定        navigationView=findViewById(R.id.menu);        cat=findViewById(R.id.cat);        drawerLayout = findViewById(R.id.drawerlayout);        //将nav_header加入到抽屉的上部分        final View headview = navigationView.inflateHeaderView(R.layout.nav_header);        kevin = headview.findViewById(R.id.kevin);        //给猫的图片添加监视器,点击后,拉出抽屉        cat.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                drawerLayout.openDrawer(Gravity.START);            }        });        //点击Kevin图片后,显示屏幕上显示adfa        kevin.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(headview.getContext(),"adfa",Toast.LENGTH_SHORT).show();//显示消息提示框            }        });        //给navigation对象添加项目选择监视器,根据点击的项目不同,所显示的消息不同        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {            @Override            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {                switch (menuItem.getItemId()) {                    case R.id.nav_2:                        Toast.makeText(headview.getContext(),"2",Toast.LENGTH_SHORT).show();                        break;                    case R.id.nav_4:                        Toast.makeText(headview.getContext(),"4",Toast.LENGTH_SHORT).show();                        break;                    case R.id.nav_5:                            Toast.makeText(headview.getContext(),"5",Toast.LENGTH_SHORT).show();                            break;                    case R.id.nav_6:                        Toast.makeText(headview.getContext(),"6",Toast.LENGTH_SHORT).show();                        break;                }                return false;            }        });    }}

最后演示

更多相关文章

  1. Android相册中获取图片和路径
  2. android抽屉SlidingDrawer——错误显示
  3. Android(安卓)使用WebView 加载新闻详情,添加点击图片的js(使用的
  4. android 开发 View _1_ View的子类们 和 视图坐标系图
  5. android 左右滑动+索引图标实现方法与代码
  6. Android中picasso图片缓存
  7. 编写android加载图片的程序时,遇到了内存泄露问题!
  8. 【android中级】之android 背景圆角和图片圆角
  9. android viewflipper 左右滑动切换显示图片效果

随机推荐

  1. Android之LayoutInflater加载布局及原理
  2. openssl加密
  3. Matrix详解_Matrix怎么用
  4. Android(安卓)studio使用adbwireless实现
  5. Android(安卓)UI开发第十三篇——android
  6. 在Android中利用iText生成PDF
  7. android应用基础--由官方帮助文件翻译
  8. camp
  9. 9.1、Android中得到新打开Activity 关闭
  10. Android修炼之道——GreenDroid 架构工具