【Android】侧滑菜单栏功能的实现(类似于QQ)

来源:互联网 发布:设置淘宝客推广条件 编辑:程序博客网 时间:2024/06/05 18:07


    通过NavigationView+DrawerLayout来实现侧滑菜单的功能(效果图如上),可通过点击左上角图标以及向右滑动实现侧滑菜单

    首先在主页布局xml中使用DreawerLayout作为外包装,将侧滑菜单包装起来即可,而功能则使用navigation实现

MainActivity.xml文件如下:

 <?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/drawer_layout"    android:layout_width="match_parent"    android:layout_height="match_parent">    <FrameLayout        android:id="@+id/content_frame"        android:layout_width="match_parent"        android:layout_height="match_parent"        />        <include layout="@layout/activity_main"/>    <android.support.design.widget.NavigationView        android:id="@+id/nav"        android:layout_gravity="left"        android:layout_width="wrap_content"        android:layout_height="match_parent"        android:fitsSystemWindows="true"        xmlns:app="http://schemas.android.com/apk/res-auto"        app:headerLayout="@layout/head"        app:menu="@menu/new_menu">    </android.support.design.widget.NavigationView></android.support.v4.widget.DrawerLayout>
侧滑菜单栏  头像处布局xml文件如下所示:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center"    android:background="#2196F3">    <ImageView        android:id="@+id/person"        android:layout_width="72dp"        android:layout_height="72dp"        android:layout_marginTop="42dp"        android:src="@mipmap/icon_camera"/>    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="20sp"        android:layout_marginTop="24dp"        android:textColor="#ffffff"        android:text="户外植物识别系统v1版"/>    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="16sp"        android:layout_marginTop="12dp"        android:textColor="#ffffff"        android:layout_marginBottom="18dp"        android:text="让你快速知道植物信息"/></LinearLayout>
接下来便是侧滑菜单menu的布局文件 ,此处包含了各个菜单项可以设置icon和文字的状态,可百度menu关键词查询具体用法。此处直接在res文件夹下面直接创建一个名为menu的文件然后把这个xml文件放到menu文件夹下即可
<?xml version="1.0" encoding="UTF-8" ?><menu xmlns:android="http://schemas.android.com/apk/res/android">    <item        android:id="@+id/menu_History"        android:title="    识别历史"/>   <item        android:id="@+id/menu_Setting"        android:title="    相关设置"/>    <item        android:id="@+id/menu_Feedback"        android:title="    反馈建议"/>    <item        android:id="@+id/menu_AboutUs"        android:actionLayout="@layout/head"        android:title="    关于我们"/></menu>
其实布局完毕后,功能代码还是相对来说很简单了,接下看看相关代码
public class MainActivity extends AppCompatActivity  {    // 图片轮播--数据源    private List<BannerviewModel> mData;    /** DrawerLayout */    private DrawerLayout drawerLayout;    //侧滑菜单栏    private NavigationView navigationView;    //沉浸式状态栏    private SystemBarTintManager tintManager;    //标题栏-侧滑-按钮    ImageView menu;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.drawer_main);        //自定义顶部导航栏方法        initView();        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);        navigationView = (NavigationView) findViewById(R.id.nav);        View headerView = navigationView.getHeaderView(0);        //开启手势滑动打开侧滑菜单栏,如果要关闭手势滑动,将后面的UNLOCKED替换成LOCKED_CLOSED 即可        drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);        /**         * 侧滑菜单item点击事件         */        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {            @Override            public boolean onNavigationItemSelected( MenuItem item) {                switch (item.getItemId()){                    case R.id.menu_History:                        Intent intent1 = new Intent();                        intent1.setClass(MainActivity.this, activity_AboutUs.class);                        startActivity(intent1);                        //此处不能加Finsh杀死界面否则点击返回会退出程序而不是回到主界面                        break;                    case R.id.menu_Setting:                        Intent intent2 = new Intent();                        intent2.setClass(MainActivity.this, activity_AboutUs.class);                        startActivity(intent2);                        break;                    case R.id.menu_Feedback:                        Toast.makeText(MainActivity.this,item.getTitle().toString(),Toast.LENGTH_SHORT).show();                        break;                    case R.id.menu_AboutUs:                        Toast.makeText(MainActivity.this,item.getTitle().toString(),Toast.LENGTH_SHORT).show();                        break;                }                drawerLayout.closeDrawer(navigationView);                return true;            }        });

这样就完成了侧滑菜单了~~;


大家看效果图时有没有发现,我的状态栏和我的titlebar颜色是一样的,这就是沉浸式状态栏的效果~~~沉浸式效果非常容易设置,详情见这篇,链接在下面

沉浸式状态栏设置http://blog.csdn.net/yuxunye85/article/details/78204459






阅读全文
0 0
原创粉丝点击