1.创建带侧滑效果的activity

右击,new---->activity---->选择NavgationDrawer Activity

2.xml文件布局

(1)activity_main_function.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/drawer_layout"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"tools:openDrawer="start"><includelayout="@layout/app_bar_main_function"android:layout_width="match_parent"android:layout_height="match_parent" /><android.support.design.widget.NavigationViewandroid:id="@+id/nav_view"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_gravity="start"android:fitsSystemWindows="true"app:headerLayout="@layout/nav_header_main_function"app:menu="@menu/activity_main_function_drawer" /></android.support.v4.widget.DrawerLayout>

可以看到我们的最外层是DrawerLayout,包含了两个内容:include为显示内容区域,NavigationView为侧边抽屉栏。

NavigationView有两个app属性,分别为app:headerLayout和app:menu,headerLayout用于显示头部的布局(可选),menu用于建立MenuItem选项的菜单。

(2)nav_header_main_function.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="@dimen/nav_header_height"android:background="@drawable/side_nav_bar"android:gravity="bottom"android:orientation="vertical"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingBottom="@dimen/activity_vertical_margin"android:theme="@style/ThemeOverlay.AppCompat.Dark"><ImageViewandroid:id="@+id/imageView"android:layout_width="80dp"android:layout_height="80dp"android:contentDescription="@string/nav_header_desc"android:paddingTop="@dimen/nav_header_vertical_spacing"app:srcCompat="@mipmap/ic_account_circle_white_48dp" /><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:paddingTop="@dimen/nav_header_vertical_spacing"android:text="@string/nav_header_title"android:textAppearance="@style/TextAppearance.AppCompat.Body1" /><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/nav_header_subtitle" /></LinearLayout>

(3)activity_main_function_drawer.xml(menu目录下)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"tools:showIn="navigation_view"><group android:checkableBehavior="single"><itemandroid:id="@+id/nav_me"android:title="我"android:icon="@mipmap/ic_mine_gray_24"/><itemandroid:id="@+id/nav_friend"android:title="好友"android:icon="@mipmap/ic_friends_gray_24"/><itemandroid:id="@+id/nav_notification"android:title="通知"android:icon="@mipmap/ic_notification_gray_24"/><itemandroid:id="@+id/nav_message"android:title="私信"android:icon="@mipmap/ic_messages_gray_24"/></group><group android:checkableBehavior="none"android:id="@+id/group_manage"><itemandroid:id="@+id/nav_manage"android:title="应用管理"android:icon="@mipmap/ic_app_management_gray_24"/></group><item android:title="Communicate"><menu><itemandroid:id="@+id/nav_share"android:icon="@drawable/ic_menu_share"android:title="分享" /><itemandroid:id="@+id/nav_send"android:icon="@drawable/ic_menu_send"android:title="发送" /></menu></item></menu>

3.java后台

package com.example.administrator.test66smartbeijing;import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;import com.example.administrator.test66smartbeijing.fragment.GovernmentFragment;
import com.example.administrator.test66smartbeijing.fragment.HomePagerFragment;
import com.example.administrator.test66smartbeijing.fragment.NewsCenterFragment;
import com.example.administrator.test66smartbeijing.fragment.SettingFragment;
import com.example.administrator.test66smartbeijing.fragment.SmartServiceFragment;import java.util.ArrayList;
import java.util.List;public class MainFunctionActivity extends AppCompatActivityimplements NavigationView.OnNavigationItemSelectedListener {ViewPager viewPager;List<Fragment> fragments;BottomNavigationView bottomNavigationView;MenuItem menuItem;TextView tv_main_title;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main_function);//设置顶部菜单栏Toolbar toolbar = findViewById(R.id.toolbar);setSupportActionBar(toolbar);DrawerLayout drawer =findViewById(R.id.drawer_layout);ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);drawer.addDrawerListener(toggle);toggle.syncState();NavigationView navigationView = findViewById(R.id.nav_view);navigationView.setNavigationItemSelectedListener(this);initBottomNavigationView();}@Overridepublic void onBackPressed() {DrawerLayout drawer = findViewById(R.id.drawer_layout);if (drawer.isDrawerOpen(GravityCompat.START)) {drawer.closeDrawer(GravityCompat.START);} else {super.onBackPressed();}}@SuppressWarnings("StatementWithEmptyBody")@Overridepublic boolean onNavigationItemSelected(MenuItem item) {// Handle navigation view item clicks here.int id = item.getItemId();if (id == R.id.nav_me) {// Handle the camera action} else if (id == R.id.nav_friend) {} else if (id == R.id.nav_notification) {} else if (id == R.id.nav_message) {} else if (id == R.id.nav_share) {} else if (id == R.id.nav_send) {}DrawerLayout drawer = findViewById(R.id.drawer_layout);drawer.closeDrawer(GravityCompat.START);return true;}private class Adapter extends FragmentPagerAdapter {List<Fragment> list1;public Adapter(FragmentManager fm, List<Fragment> fragments) {super(fm);this.list1=fragments;}@Overridepublic Fragment getItem(int position) {return list1.get(position);}@Overridepublic int getCount() {return list1.size();}}
}

4.效果图

参考文献:https://www.cnblogs.com/JohnTsai/p/5172056.html

转载于:https://www.cnblogs.com/luckyplj/p/10931418.html

034 Android NavigationView和DrawerLayout实现抽屉式导航设计(侧边栏效果)相关推荐

  1. 基于 android 平台的百度地图手机导航设计文献综述,文献综述-基于Android平台的手机Web地图服务设计.doc...

    PAGE 1 文 献 综 述 毕业设计题目: 基于Android平台的 手机Web地图服务设计 PAGE 4 PAGE \* MERGEFORMAT 1 基于Android平台的手机Web地图服务设计 ...

  2. Android ViewPager和Fragment实现顶部导航界面滑动效果

    在项目中,我们常常需要实现界面滑动切换的效果.例如,微信界面的左右滑动切换效果.那这种效果是怎么实现的?今天我就带大家简单了解ViewPager,并通过实例来实现该效果. 一. ViewPager 官 ...

  3. Android学习整理 - 状态栏和虚拟导航键透明效果

    状态栏和虚拟导航键 4.4上半透明,5.0以上可以全透明 先上效果 4.4 半透明效果 5.0及以上 全透明效果 上代码 MainActivity代码 public class MainActivit ...

  4. android tab 切换动画,Android之ViewPager+TabLayout组合实现导航条切换效果(微信和QQ底部多标签切换)...

    前言 之前在另外一篇中用Fragment和button实现了点击切换Fragment的效果,比较简陋.这次改用ViewPager+TabLayout 实现联动的效果. 实现效果 ViewPager 多 ...

  5. android仿抽屉动画效果,Android之仿哔哩哔哩客户端首页+抽屉式导航

    本文使用Toobar+DrawerLayout+NavigationView仿哔哩哔哩客户端首页+抽屉式导航,同时实现了沉浸式状态栏的效果. 一.效果图 图片及图标色彩等没有刻意模仿,结构相同. 上图 ...

  6. 安卓项目实战之DrawerLayout+NavigationView+ToolBar实现抽屉式侧边栏效果

    效果图 添加依赖 由于用到v4包下DrawerLayout,v7包下Toolbar,和android.support.design下的NavigationView,需要在gradle中作如下配置: v ...

  7. Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果

    在以前,做策划导航的时候,最常用的组件便是SlidingMenu了,当初第一次用它的时候觉得那个惊艳啊,体验可以说是非常棒. 后来,Android自己推出了一个可以实现策划导航的组件DrawerLay ...

  8. Android开发之DrawerLayout与NavigationView之间不得不说的基友情

    前言:话说自从5.0之后,Google为了安卓应用的风格更加统一(之前是holo风格,不过引起的反响不大),开始了Matrail Design的设计风格,咱今天所讲的就是基于Matrail Desig ...

  9. 【Android笔记44】Android利用DrawerLayout布局组件实现侧滑导航菜单的效果

    这篇文章,主要介绍Android如何利用DrawerLayout布局组件实现侧滑导航菜单的效果. 目录 一.侧滑菜单栏 1.1.效果演示 1.2.DrawerLayout布局介绍 (1)打开侧边栏

最新文章

  1. java rmi 使用方法
  2. 初学者如何选择合适的机器学习算法(附算法速查表)
  3. java异常—— finally 子句+带资源的 try语句
  4. 【狂神说】分析前后端分离开源项目?
  5. mongodb ssl java_MongoDB自签名SSL连接:SSL对等证书验证失败
  6. window下查看WebLogic mbean
  7. oracle 删除老存档,【转】oracle存档日志删除
  8. 线上python课程一般多少钱-专业Python实战课程|学习Python需要多少钱?
  9. Categories
  10. 家居有线网络布线方案(转)
  11. MYSQL连接出现Auth_连接MySQL数据库出现时Authentication plugin 'caching_sha2_password' cannot be loaded的解决办法...
  12. 华为NP课程笔记21-QoS服务模型
  13. 【ubuntu如何卸载mysql(ubuntu卸载mysql的具体方法)】
  14. 市场的各大TWS蓝牙耳机芯片方案汇总
  15. 2021年UI设计风格新风向新趋势,赶紧收藏!
  16. android Pbap下载手机电话簿协议介绍
  17. 有个Linux主机能干什么,什么是Linux主机?
  18. 同比 数据模型 环比_使用数据分析软件进行同比和环比数据分析
  19. iOS 【微信登录流程以及遇到的一些坑】
  20. 微信客户端如何发只有纯文字 不带图片的朋友圈动态

热门文章

  1. 网络负载平衡oracle,[Oracle] RAC 之 - 负载均衡深入解析
  2. 数据结构之图:图的搜索,Python代码实现——23
  3. 无忧计算机二级试题题库,全国计算机二级MS Office试题
  4. LeetCode 1705. 吃苹果的最大数目(优先队列)
  5. 牛客 牛牛的独特子序列(双指针/二分查找)
  6. LeetCode 1679. K 和数对的最大数目(哈希)
  7. LeetCode 754. 到达终点数字(数学推理)
  8. LeetCode 334. 递增的三元子序列
  9. LeetCode 1137. 第 N 个泰波那契数
  10. 人类附身机器人获得永生_脑机接口先驱尼古莱利斯:人类无法实现数字永生