1.创建带侧滑效果的activity

右击,new---->activity---->选择NavgationDrawer Activity
2.xml文件布局
(1)activity_main_function.xml
1<?xml version="1.0" encoding="utf-8"?> 2<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:id="@+id/drawer_layout" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent" 8 android:fitsSystemWindows="true" 9 tools:openDrawer="start"> 10 11 <include 12 layout="@layout/app_bar_main_function" 13 android:layout_width="match_parent" 14 android:layout_height="match_parent" /> 15 16 <android.support.design.widget.NavigationView 17 android:id="@+id/nav_view" 18 android:layout_width="wrap_content" 19 android:layout_height="match_parent" 20 android:layout_gravity="start" 21 android:fitsSystemWindows="true" 22 app:headerLayout="@layout/nav_header_main_function" 23 app:menu="@menu/activity_main_function_drawer" /> 24 25</android.support.v4.widget.DrawerLayout>
可以看到我们的最外层是DrawerLayout,包含了两个内容:include为显示内容区域,NavigationView为侧边抽屉栏。
NavigationView有两个app属性,分别为app:headerLayout和app:menu,headerLayout用于显示头部的布局(可选),menu用于建立MenuItem选项的菜单。
(2)nav_header_main_function.xml
1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 android:layout_width="match_parent" 5 android:layout_height="@dimen/nav_header_height" 6 android:background="@drawable/side_nav_bar" 7 android:gravity="bottom" 8 android:orientation="vertical" 9 android:paddingLeft="@dimen/activity_horizontal_margin" 10 android:paddingTop="@dimen/activity_vertical_margin" 11 android:paddingRight="@dimen/activity_horizontal_margin" 12 android:paddingBottom="@dimen/activity_vertical_margin" 13 android:theme="@style/ThemeOverlay.AppCompat.Dark"> 14 15 <ImageView 16 android:id="@+id/imageView" 17 android:layout_width="80dp" 18 android:layout_height="80dp" 19 android:contentDescription="@string/nav_header_desc" 20 android:paddingTop="@dimen/nav_header_vertical_spacing" 21 app:srcCompat="@mipmap/ic_account_circle_white_48dp" /> 22 23 <TextView 24 android:layout_width="match_parent" 25 android:layout_height="wrap_content" 26 android:paddingTop="@dimen/nav_header_vertical_spacing" 27 android:text="@string/nav_header_title" 28 android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 29 30 <TextView 31 android:id="@+id/textView" 32 android:layout_width="wrap_content" 33 android:layout_height="wrap_content" 34 android:text="@string/nav_header_subtitle" /> 35 36</LinearLayout>
(3)activity_main_function_drawer.xml(menu目录下)
1<?xml version="1.0" encoding="utf-8"?> 2<menu xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 tools:showIn="navigation_view"> 5 6 <group android:checkableBehavior="single"> 7 <item 8 android:id="@+id/nav_me" 9 android:title="我" 10 android:icon="@mipmap/ic_mine_gray_24"/> 11 <item 12 android:id="@+id/nav_friend" 13 android:title="好友" 14 android:icon="@mipmap/ic_friends_gray_24"/> 15 <item 16 android:id="@+id/nav_notification" 17 android:title="通知" 18 android:icon="@mipmap/ic_notification_gray_24"/> 19 <item 20 android:id="@+id/nav_message" 21 android:title="私信" 22 android:icon="@mipmap/ic_messages_gray_24" 23 /> 24 </group> 25 26 <group android:checkableBehavior="none" 27 android:id="@+id/group_manage"> 28 <item 29 android:id="@+id/nav_manage" 30 android:title="应用管理" 31 android:icon="@mipmap/ic_app_management_gray_24"/> 32 </group> 33 34 <item android:title="Communicate"> 35 <menu> 36 <item 37 android:id="@+id/nav_share" 38 android:icon="@drawable/ic_menu_share" 39 android:title="分享" /> 40 <item 41 android:id="@+id/nav_send" 42 android:icon="@drawable/ic_menu_send" 43 android:title="发送" /> 44 </menu> 45 </item> 46 47</menu>
3.java后台
1package com.example.administrator.test66smartbeijing; 2 3import android.os.Bundle; 4import android.support.annotation.NonNull; 5import android.support.design.widget.BottomNavigationView; 6import android.support.design.widget.NavigationView; 7import android.support.v4.app.Fragment; 8import android.support.v4.app.FragmentManager; 9import android.support.v4.app.FragmentPagerAdapter; 10import android.support.v4.view.GravityCompat; 11import android.support.v4.view.ViewPager; 12import android.support.v4.widget.DrawerLayout; 13import android.support.v7.app.ActionBarDrawerToggle; 14import android.support.v7.app.AppCompatActivity; 15import android.support.v7.widget.Toolbar; 16import android.view.Menu; 17import android.view.MenuItem; 18import android.widget.TextView; 19 20import com.example.administrator.test66smartbeijing.fragment.GovernmentFragment; 21import com.example.administrator.test66smartbeijing.fragment.HomePagerFragment; 22import com.example.administrator.test66smartbeijing.fragment.NewsCenterFragment; 23import com.example.administrator.test66smartbeijing.fragment.SettingFragment; 24import com.example.administrator.test66smartbeijing.fragment.SmartServiceFragment; 25 26import java.util.ArrayList; 27import java.util.List; 28 29public class MainFunctionActivity extends AppCompatActivity 30 implements NavigationView.OnNavigationItemSelectedListener { 31 32 ViewPager viewPager; 33 List<Fragment> fragments; 34 BottomNavigationView bottomNavigationView; 35 MenuItem menuItem; 36 TextView tv_main_title; 37 @Override 38 protected void onCreate(Bundle savedInstanceState) { 39 super.onCreate(savedInstanceState); 40 setContentView(R.layout.activity_main_function); 41 42 //设置顶部菜单栏 43 Toolbar toolbar = findViewById(R.id.toolbar); 44 setSupportActionBar(toolbar); 45 46 DrawerLayout drawer =findViewById(R.id.drawer_layout); 47 ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( 48 this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 49 drawer.addDrawerListener(toggle); 50 toggle.syncState(); 51 52 NavigationView navigationView = findViewById(R.id.nav_view); 53 navigationView.setNavigationItemSelectedListener(this); 54 55 initBottomNavigationView(); 56 } 57 58 @Override 59 public void onBackPressed() { 60 DrawerLayout drawer = findViewById(R.id.drawer_layout); 61 if (drawer.isDrawerOpen(GravityCompat.START)) { 62 drawer.closeDrawer(GravityCompat.START); 63 } else { 64 super.onBackPressed(); 65 } 66 } 67 68 @SuppressWarnings("StatementWithEmptyBody") 69 @Override 70 public boolean onNavigationItemSelected(MenuItem item) { 71 // Handle navigation view item clicks here. 72 int id = item.getItemId(); 73 74 if (id == R.id.nav_me) { 75 // Handle the camera action 76 } else if (id == R.id.nav_friend) { 77 78 } else if (id == R.id.nav_notification) { 79 80 } else if (id == R.id.nav_message) { 81 82 } else if (id == R.id.nav_share) { 83 84 } else if (id == R.id.nav_send) { 85 86 } 87 88 DrawerLayout drawer = findViewById(R.id.drawer_layout); 89 drawer.closeDrawer(GravityCompat.START); 90 return true; 91 } 92 93 private class Adapter extends FragmentPagerAdapter { 94 95 List<Fragment> list1; 96 public Adapter(FragmentManager fm, List<Fragment> fragments) { 97 super(fm); 98 this.list1=fragments; 99 } 100 101 @Override 102 public Fragment getItem(int position) { 103 return list1.get(position); 104 } 105 106 @Override 107 public int getCount() { 108 return list1.size(); 109 } 110 111 } 112}
4.效果图
