iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android中DrawerLayout如何实现侧滑菜单效果
  • 522
分享到

Android中DrawerLayout如何实现侧滑菜单效果

drawerlayoutandroid 2023-05-30 18:05:13 522人浏览 泡泡鱼
摘要

这篇文章主要为大家展示了“Android中DrawerLayout如何实现侧滑菜单效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中DrawerLayout如何实现侧滑菜单效果”

这篇文章主要为大家展示了“Android中DrawerLayout如何实现侧滑菜单效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中DrawerLayout如何实现侧滑菜单效果”这篇文章吧。

效果图:

Android中DrawerLayout如何实现侧滑菜单效果

开始写代码

DrawerLayout 是v4包里面的,所以项目里面需要添加v4包,具体怎么添加就不多说了,
NavigationView需要在build.gradle里面添加compile ‘com.android.support:design:25.1.0'

activity_main.xml

<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"> <!-- 右边视图 --> <include layout="@layout/app_bar_main" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- 左边菜单 --> <android.support.design.widget.NavigationView android: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" app:menu="@menu/activity_main_drawer" /></android.support.v4.widget.DrawerLayout>

然后在res文件夹里面添加一个menu菜单文件夹,已经添加的就不用添加了

上面的代码里面NavigationView里面有个 app:menu=”@menu/activity_main_drawer”对应如下:
添加一个菜单文件,名字随意,我的是activity_main_drawer.xml

activity_main_drawer.xml

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item  android:id="@+id/nav_camera"  android:icon="@drawable/ic_menu_camera"  android:title="第一行" /> <item  android:id="@+id/nav_gallery"  android:icon="@drawable/ic_menu_gallery"  android:title="第二行" /> <item  android:id="@+id/nav_slideshow"  android:icon="@drawable/ic_menu_slideshow"  android:title="第三行" /> <item  android:id="@+id/nav_manage"  android:icon="@drawable/ic_menu_manage"  android:title="第四行" /> </group> <item android:title="Communicate"> <menu>  <item  android:id="@+id/nav_share"  android:icon="@drawable/ic_menu_share"  android:title="第五行" />  <item  android:id="@+id/nav_send"  android:icon="@drawable/ic_menu_send"  android:title="第六行" /> </menu> </item></menu>

再添加一个布局

上面的代码里面app:headerLayout=”@layout/nav_header_main”对应如下:
添加一个布局,名字是nav_header_main.xml

nav_header_main.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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:theme="@style/ThemeOverlay.AppCompat.Dark"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="@dimen/nav_header_vertical_spacing" app:srcCompat="@android:drawable/sym_def_app_icon" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="@dimen/nav_header_vertical_spacing" android:text="哈哈哈" android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="123456789@qq.com" /></LinearLayout>

MainActivity:

public class MainActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener { private LinearLayout right; private NavigationView left; private boolean isDrawer=false; private DrawerLayout drawer; @Override public int getLayoutId() { return R.layout.activity_main; } @Override public void initPresenter() { } @Override public void initView() { drawer = (DrawerLayout) findViewById(R.id.drawer_layout); right = (LinearLayout) findViewById(R.id.right); left = (NavigationView) findViewById(R.id.nav_view); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); right.setOnTouchListener(new View.OnTouchListener() {  @Override  public boolean onTouch(View view, MotionEvent motionEvent) {  if(isDrawer){   return left.dispatchTouchEvent(motionEvent);  }else{   return false;  }  } }); drawer.setDrawerListener(new DrawerLayout.DrawerListener() {  @Override  public void onDrawerSlide(View drawerView, float slideOffset) {  isDrawer=true;  //获取屏幕的宽高  WindowManager manager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);  Display display = manager.getDefaultDisplay();  //设置右面的布局位置 根据左面菜单的right作为右面布局的left 左面的right+屏幕的宽度(或者right的宽度这里是相等的)为右面布局的right  right.layout(left.getRight(), 0, left.getRight() + display.getWidth(), display.getHeight());  }  @Override  public void onDrawerOpened(View drawerView) {}  @Override  public void onDrawerClosed(View drawerView) {  isDrawer=false;  }  @Override  public void onDrawerStateChanged(int newState) {} }); } @Override public void onBackPressed() { if (drawer.isDrawerOpen(GravityCompat.START)) {  drawer.closeDrawer(GravityCompat.START); } else {  super.onBackPressed(); } } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.nav_camera) {  // Handle the camera action } else if (id == R.id.nav_gallery) { } else if (id == R.id.nav_slideshow) { } else if (id == R.id.nav_manage) { } else if (id == R.id.nav_share) { } else if (id == R.id.nav_send) { } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; }

drawer.openDrawer(GravityCompat.START);//打开滑动菜单

drawer.closeDrawer(GravityCompat.START);//关闭滑动菜单

drawer.isDrawerOpen(GravityCompat.START);//判断滑动菜单是否打开

以上是“Android中DrawerLayout如何实现侧滑菜单效果”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Android中DrawerLayout如何实现侧滑菜单效果

本文链接: https://www.lsjlt.com/news/220447.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android Drawerlayout实现侧滑菜单效果
    本文实例为大家分享了Drawerlayout侧滑菜单的具体代码,供大家参考,具体内容如下Drawerlayout的xml布局<?xml version="1.0" encoding="utf-8"?><Re...
    99+
    2023-05-30
    drawerlayout 侧滑菜单 roi
  • Android中DrawerLayout如何实现侧滑菜单效果
    这篇文章主要为大家展示了“Android中DrawerLayout如何实现侧滑菜单效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中DrawerLayout如何实现侧滑菜单效果”...
    99+
    2023-05-30
    drawerlayout android
  • Android使用DrawerLayout实现侧滑菜单效果
    一、概述DrawerLayout是一个可以方便的实现Android侧滑菜单的组件,我最近开发的项目中也有一个侧滑菜单的功能,于是DrawerLayout就派上用场了。如果你从未使用过DrawerLayout,那么本篇博客将使用一个简单的案例...
    99+
    2023-05-30
    android drawerlayout 侧滑菜单
  • 怎么使用DrawerLayout和NavigationView实现侧滑菜单栏的效果
    小编给大家分享一下怎么使用DrawerLayout和NavigationView实现侧滑菜单栏的效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!效果如下:Layout布局<android.support.v4.wi...
    99+
    2023-05-30
    material design
  • Android侧滑菜单控件DrawerLayout使用详解
    DrawerLayout是Android V4包下一个带有侧滑功能的布局控件,可以根据手势展开与隐藏侧边栏,也可以随着侧边栏的点击改变主界面区的内容。并且只需要按照DrawerLayout规定的布局格式进行布局,即可实现左右侧滑效果。一、约...
    99+
    2023-05-30
  • Android使用DrawerLayout仿QQ6.6版侧滑效果
    一讲到侧滑菜单,我相信大家都会想到一个开源控件SlidingMenu,在google还没有出来DrawerLayout的时候几乎都是使用Slidingmenu来实现侧滑效果,可以说是效果很不错,自从google出了Drawerlayout以...
    99+
    2023-05-30
  • 怎么在Android中利用DrawerLayout实现一个双向侧滑菜单
    这篇文章将为大家详细讲解有关怎么在Android中利用DrawerLayout实现一个双向侧滑菜单,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。布局文件的代码:<LinearLayou...
    99+
    2023-05-30
  • 如何使用android实现左右侧滑菜单效果的方法
    这篇文章主要介绍了如何使用android实现左右侧滑菜单效果的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在android开发中,左右侧滑菜单的开发已成为我们现在开发的...
    99+
    2023-05-30
    android
  • DrawerLayout的简单使用及侧滑菜单实现详解
    目录1.使用的注意事项2.使用代码示例示例1:单个侧滑菜单的实现示例2.左右两个侧滑菜单的实现1.使用的注意事项 本节给大家带来基础UI控件部分的最后一个控件:DrawerLayo...
    99+
    2023-05-15
    DrawerLayout侧滑菜单 DrawerLayout使用
  • android侧滑菜单控件DrawerLayout使用方法详解
    drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物。drawerLayout分为侧边菜单和主内...
    99+
    2023-05-30
  • android自定义左侧滑出菜单效果
    这里给大家提供一个类似QQ聊天那种可以左侧滑出菜单的自定义控件。希望对大家有帮助。参考了一些网友的做法,自己整理优化了一下,用法非常简单,就一个类,不需要自己写任何的代码,只要添加上...
    99+
    2024-04-02
  • Android实现左侧滑动菜单
    本文实例为大家分享了Android实现左侧滑动菜单的具体代码,供大家参考,具体内容如下 效果图: SlideActivity.java: package com.demo.slid...
    99+
    2024-04-02
  • android侧滑菜单怎么实现
    Android侧滑菜单可以通过以下几种方式实现:1. 使用DrawerLayout和NavigationView:DrawerLay...
    99+
    2023-08-18
    android
  • Vue中怎么使用DrawerLayout侧滑菜单组件
    Vue中怎么使用DrawerLayout侧滑菜单组件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。HTML结构页面结构很简单,一个抽屉,一个主...
    99+
    2024-04-02
  • Android中如何使用DrawerLayout侧滑控件
    Android中如何使用DrawerLayout侧滑控件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。activity_sliding.xml:<xml&...
    99+
    2023-05-30
  • DrawerLayout的简单使用及侧滑菜单实现方法是什么
    本篇内容主要讲解“DrawerLayout的简单使用及侧滑菜单实现方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“DrawerLayout的简单使用及侧滑菜单实现方法是什么”吧!1.使用...
    99+
    2023-07-06
  • Android怎么实现侧滑抽屉菜单
    这篇文章将为大家详细讲解有关Android怎么实现侧滑抽屉菜单,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。侧滑抽屉菜单 前言正文一、创建项目二、添加滑动菜单三、UI美化四、添加导航视图五、菜单分类六、动...
    99+
    2023-06-14
  • Android自定义ViewGroup实现侧滑菜单
    目录前言一、常用的几种交互方式1.1 事件的拦截处理1.2 自行处理事件的几种方式1.3 子View的滚动与协调交互1.4 ViewGroup之间的嵌套与协调效果二、ViewDrag...
    99+
    2023-01-05
    Android ViewGroup侧滑菜单 Android ViewGroup菜单 Android ViewGroup Android 菜单
  • 如何在Android中使用DrawerLayout侧滑控件
    如何在Android中使用DrawerLayout侧滑控件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。DrawerLayout 类的结构图如下:官方中文简介大概如下:Dr...
    99+
    2023-05-30
    android drawerlayout
  • Android 侧滑抽屉菜单的实现代码
    目录前言正文一、创建项目二、添加滑动菜单三、UI美化四、添加导航视图五、菜单分类六、动态菜单七、源码运行效果图: 前言   滑动菜单相信都不会陌生,你可能见...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作