(安卓APP)利用NavigationView做的侧滑菜单案例

首先,在 Android stuio 创建一个new project (这里名字自己取)

然后,在build.gradle(moudule:app)dependencies里面添加依赖 compile'com.android.support:design:25+' (或者自己通过file-->project structure-->dependencies-->搜索design,z之后找到你电脑匹配的SDK版本添加)

接下来先把布局写好。

activity.xml

xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/scenery"
    tools:context="com.example.administrator.navigationview.MainActivity">

    <android.support.design.widget.NavigationView
        android:id="@+id/navigationview"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/my_drawer_header"//这是自己添加的一个布局
        app:menu="@menu/my_drawer_view"/>//在自己创建的menu包里面写的一个view
android.support.v4.widget.DrawerLayout>
这里我在DrawerLayout里面嵌套了一个NavigationView......

my_drawer_header.xml

xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background= "@drawable/travel"
    android:layout_height="150dp"
    android:orientation="vertical">
    <TextView
        android:textSize="20sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="so beautifu!"/>
LinearLayout>

my_drawer_view.xml

xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title=" 主标题" />
    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_item_1"
            android:icon="@drawable/monkey"
            android:title="标题1" />
        <item
            android:id="@+id/nav_item_2"
            android:icon="@drawable/monkey"
            android:title="标题2" />
    group>

    <item android:title="副标题">
        <menu>
            <item
                android:id="@+id/nav_sub_1"
                android:icon="@drawable/monkey"
                android:title="标题3" />
            <item
                android:id="@+id/nav_sub_2"
                android:icon="@drawable/monkey"
                android:title="标题4" />
        menu>
    item>
menu>
(安卓APP)利用NavigationView做的侧滑菜单案例_第1张图片

MainActivity.java

import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        NavigationView navigationView = (NavigationView) findViewById(R.id.navigationview);
        //处理navigationheaderview的点击事件
        View v = navigationView.getHeaderView(0);
        Log.i("Tag", "v=" + v);//这个是测试数据
        v.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {//点击标题Toast标题信息
                Toast.makeText(MainActivity.this, "headerview.v=" + v, Toast.LENGTH_SHORT).show();
            }
        });
//处理navigationView中菜单点击事件
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()) {//下面的我是Toast一下,可以直接按照你的需求填写
                    case R.id.nav_item_1:
                        Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.nav_item_2:
                        Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.nav_sub_1:
                        Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.nav_sub_2:
                        Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
                        break;
                }
                return true;
            }
        });
    }
}
这只是一个简单的利用Navigation实现标题栏的侧滑,后续的可以直接设置跳转到你所需要的界面,或者你实现的功能里面。








你可能感兴趣的:(安卓开发)