Android开发实现抽屉菜单

本文实例为大家分享了Android开发实现抽屉菜单的具体代码,供大家参考,具体内容如下

实现效果

点击菜单图表即可进入抽屉

代码实现

1、打开app/build.gradle文件,在dependencies闭包中添加如下内容:

dependencies {
            compile fileTree(dir: 'libs', include: ['*.jar'])
            compile 'com.android.support:appcompat-v7:24.2.1'
            testCompile 'junit:junit:4.12'
            compile 'com.android.support:design:24.2.1'
            compile 'de.hdodenhof:circleimageview:2.1.0'
        }

2、进入想要添加抽屉的界面的layout布局

添加DrawerLayout控件

首先DrawerLayout是一个布局,在布局中允许放入两个直接子控件,第一个子控件是主屏幕中的内容,第二个空间是滑动菜单中显示的内容

原本的界面所有布局内容就放在第一个子控件中

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.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/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@mipmap/bk_1"
    tools:context="com.luckyxmobile.graphserviceping.MainActivity">

    <!-- 内容区 -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <ImageView
            android:id="@+id/setting"
            android:layout_width="56dp"
            android:layout_height="56dp"
            android:layout_marginLeft="8dp"
            android:background="@drawable/ic_baseline_menu1"
            />
        <!--    android:background="@drawable/ic_baseline_menu_24"-->
        <!--原图标宽高 40 52-->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="180dp"
            android:id="@+id/graphServicePing"
            android:gravity="center"
            android:text="Graph Service Ping"
            android:textColor="#26C6DA"
            android:textSize="36dp"/>

        <LinearLayout
            android:layout_marginTop="32dp"
            android:layout_gravity="center_horizontal"
            android:background="@drawable/bloder"
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:layout_marginStart="16dp"
            android:layout_marginEnd="16dp"
            android:paddingHorizontal="4dp">
            <!--        android:paddingHorizontal="16dp"-->
<!--            android:layout_height="wrap_content"-->

            <Button
                android:minHeight="50dp"
                android:id="@+id/btn_input"
                android:layout_width="0dp"
                android:layout_weight="8"
                android:layout_height="wrap_content"
                android:textSize="20dp"
                android:layout_marginLeft="8dp"
                android:background="@null"
                />

            <Button
                android:id="@+id/btn_ping"
                android:background="@null"
                android:layout_weight="4"
                android:text="Ping!"
                android:textColor="#262626"
                android:textSize="25sp"
                android:layout_width="0dp"
                android:layout_height="80dp"
                />
<!--                android:layout_weight="2"-->
<!--            android:layout_width="50dp"-->
<!--            android:layout_height="50dp"-->
        </LinearLayout>
    </LinearLayout>

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:background="@mipmap/bk_1"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/nav_menu">
    </com.google.android.material.navigation.NavigationView>

</androidx.drawerlayout.widget.DrawerLayout>

android:layout_gravity="start"这一句很重要,一定要加上

3.NavigationView用来优化滑动菜单页面的

menu用来在NavigationView中显示具体的菜单项,headerLayout则用来在NavigationView中显示头布局(这里我只用到了menu,所以我只写menu)

在res下如果没有menu目录,可以新建一个menu文件夹,然后右键menu->new_menu resource file

menu代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/nav_setting"
        android:icon="@drawable/ic_launcher_setting_foreground"
        android:title="设置">
    </item>

</menu>

可以添加多个item,不要忘了引用menu

app:menu="@menu/nav_menu"

4.设置主界面菜单图表的点击事件

跟intent不同

setting.setOnClickListener(new View.OnClickListener() {  //设置点击事件
            @Override
            public void onClick(View v) {
            mDrawerLayout.openDrawer(GravityCompat.START);
            }
        });

5、设置抽屉菜单item点击事件

DrawerLayout mDrawerLayout;

  mDrawerLayout=findViewById(R.id.drawerLayout);

        NavigationView navView=(NavigationView)findViewById(R.id.nav_view);
        navView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener(){

            @Override
            public boolean onNavigationItemSelected(MenuItem item) {
                switch(item.getItemId()){
                    case R.id.nav_setting:
                        startActivity(new Intent(MainActivity.this, Setting.class));
                        break;
                }
                mDrawerLayout.closeDrawers();
                return false;
            }
        });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android组件之DrawerLayout实现抽屉菜单

    DrawerLayout组件同样是V4包中的组件,也是直接继承于ViewGroup类,所以这个类也是一个容器类. 抽屉菜单的摆放和布局通过android:layout_gravity属性来控制,可选值为left.right或start.end.通过xml来布局的话,需要把DrawerLayout作为父容器,组界面布局作为其第一个子节点,抽屉布局则紧随其后作为第二个子节点,这样就做就已经把内容展示区和抽屉菜单区独立开来,只需要分别为两个区域设置内容即可.android提供了一些实用的监听器,重载相

  • Android 侧滑抽屉菜单的实现代码

    侧滑抽屉菜单 前言正文一.创建项目二.添加滑动菜单三.UI美化四.添加导航视图五.菜单分类六.动态菜单七.源码 运行效果图: 前言   滑动菜单相信都不会陌生,你可能见过很多这样的文章,但我的文章会给你不一样的阅读和操作体验. 正文   写博客,自然是从创建项目开始了,这样你可以更好的知道这个过程中经历了什么. 一.创建项目   项目就命名为DrawerDemo, 绝对的手把手教学,让你清楚每一步怎么做. 然后打开app下的build.gradle,在android{}闭包中添加如下代码: //

  • Android开源AndroidSideMenu实现抽屉和侧滑菜单

    AndroidSideMenu能够让你轻而易举地创建侧滑菜单.需要注意的是,该项目自身并不提供任何创建菜单的工具,因此,开发者可以自由创建内部菜单. 核心类如下: /* * Copyright dmitry.zaicew@gmail.com Dmitry Zaitsev * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in com

  • Android 抽屉效果的导航菜单实现代码实例

    看了很多应用,觉得这种侧滑的抽屉效果的菜单很好. 不用切换到另一个页面,也不用去按菜单的硬件按钮,直接在界面上一个按钮点击,菜单就滑出来,而且感觉能放很多东西. 关于实现,搜索了一下,有如下两种: 1.用SlidingDrawer:http://developer.android.com/reference/android/widget/SlidingDrawer.html 但是不知道为什么这个类官方不建议再继续用了:Deprecated since API level 17 2.用Drawer

  • Android App中DrawerLayout抽屉效果的菜单编写实例

    抽屉效果的导航菜单 看了很多应用,觉得这种侧滑的抽屉效果的菜单很好. 不用切换到另一个页面,也不用去按菜单的硬件按钮,直接在界面上一个按钮点击,菜单就滑出来,而且感觉能放很多东西. 库的引用: 首先, DrawerLayout这个类是在Support Library里的,需要加上android-support-v4.jar这个包. 然后程序中用时在前面导入import android.support.v4.widget.DrawerLayout; 如果找不到这个类,首先用SDK Manager更

  • Android实现自定义滑动式抽屉效果菜单

    在Andoird使用Android自带的那些组件,像SlidingDrawer和DrawerLayout都是抽屉效果的菜单,但是在项目很多要实现的功能都收到Android这些自带组件的限制,导致很难完成项目的需求,自定义的组件,各方面都在自己的控制之下,从而根据需求做出调整.想要实现好的效果,基本上都的基于Android的OnTouch事件自己实现响应的功能. 首先,给大家先看一下整体的效果: 滑动的加速度效果都是有的,具体的体验,只能安装后才能查看. 接下来,看代码: 代码从MainActiv

  • Android开发实现抽屉菜单

    本文实例为大家分享了Android开发实现抽屉菜单的具体代码,供大家参考,具体内容如下 实现效果 点击菜单图表即可进入抽屉 代码实现 1.打开app/build.gradle文件,在dependencies闭包中添加如下内容: dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:24.2.1' testCompile 'junit:ju

  • Android开发之开发者头条(二)实现左滑菜单

    在上篇文章给大家介绍了Android开发之开发者头条(一)启动页实现,感兴趣的朋友可以参考下. title: 带你实现开发者头条(二) 实现左滑菜单 tags: 左滑菜单,android 自带侧滑,DrawerLayout grammar_cjkRuby: true 今天开始模仿开发者头条的侧滑菜单,是本系列第二篇文章,相信大家已经看到很多app使用这种侧滑.今天我来教大家用android自带DrawerLayout控件实现. DrawerLayout是SupportLibrary包中实现了侧滑

  • Android开发Popwindow仿微信右上角下拉菜单实例代码

    先给大家看下效果图: MenuPopwindow: package com.cloudeye.android.cloudeye.view; import android.app.Activity; import android.content.Context; import android.graphics.drawable.ColorDrawable; import android.view.LayoutInflater; import android.view.View; import an

  • Android 6.0开发实现关机菜单添加重启按钮的方法

    本文实例讲述了Android 6.0开发实现关机菜单添加重启按钮的方法.分享给大家供大家参考,具体如下: 修改: /trunk/LINUX/android/frameworks/base/core/res/res/values/config.xml 添加数组name为config_globalActionsList的值 修改: /LINUX/android/frameworks/base/services/core/java/com/android/server/policy/GlobalAct

  • Android开发之菜单(menu)用法实例分析

    本文实例讲述了Android开发之菜单(menu)用法.分享给大家供大家参考,具体如下: Android手机专门用一个按键"menu"来显示菜单. 要实现菜单功能,首先要通过方法onCreateOptionMenu来创建菜单,创建方法有两种:一种是直接导入有menu的xml文件,一种是用类Menu的方法直接添加.创建好菜单后,用事件监听器onOptionItemSelected对能够触发的事件进行监听. 下面这个例子有两个Activity,分别有上面的两种方法实现menu,每个menu

  • Android开发实现SubMenu选项菜单和子菜单示例

    本文实例讲述了Android开发实现SubMenu选项菜单和子菜单.分享给大家供大家参考,具体如下: 简介: SubMenu:代表一个子菜单,包含1~N个MenuItem 实现效果: 具体实现方法: 主活动 MainActivity: public class MainActivity extends AppCompatActivity { //定义 "字体大小" 菜单项的标识 final int FONT_10 = 0x111; final int FONT_12 = 0x112;

  • Android开发菜单布局之表格布局示例

    本文实例讲述了Android开发菜单布局之表格布局.分享给大家供大家参考,具体如下: 多用于静态菜单页面 xml代码 代码内带详细解释 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.andro

  • Android开发技巧之我的菜单我做主(自定义菜单)

    Android SDK本身提供了一种默认创建菜单的机制.但通过这种机制创建的菜单虽然从功能上很完备,但在界面效果上实在是有点"土".对于一个拥有绚丽界面的程序配上一个有点"土"的菜单,会使用户感觉很怪,甚至会使绚丽的界面大打折扣.实际上,对于如此灵活和强大的Android系统,修改菜单的样式只是小菜一碟.为程序加入漂亮菜单的方法很多.在本节先介绍一种比较常用的方法,就是通过onKeyDown事件方法和PopupWindow实现自定义的菜单.至于通过这种技术能否设计出

随机推荐