普通的菜单都是放在toolbar上,但是那样会让我们的 app看起来很难看,而所谓的滑动菜单,就是将一些菜单选项隐藏起来,而不是放置在主屏幕上,然后用户就可以通过滑动的方式将菜单显示出来,这种方式既节省屏幕空间,又实现了良好的动画效果。
这个功能看起来比较难实现,如果要自己实现的话确实是这样,不过google早就想到这一点了,Google提供了一个DrawerLayout插件,借助这个控件来实现滑动菜单就很方便了。
DrawerLayout,顾名思义,他是一个布局,该布局中允许开发者放入两个直接子控件,第一个子控件是主屏幕中显示的内容,第二个控件是滑动菜单中显示的内容,如下:
<?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”
android:layout_width=“match_parent”
android:layout_height=“match_parent”>
<FrameLayout
android:layout_width=“match_parent”
android:layout_height=“match_parent”>
<android.support.design.widget.NavigationView
android:id=“@+id/nav_view”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:layout_gravity=“start”
android:background=“@drawable/lanhua”
app:headerLayout=“@layout/nav_header”
app:menu=“@menu/nav_menu”>
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
其中的FrameLayout布局就是用来放主屏幕的配置文件的,剩下的这个布局就是显示在滑动菜单的内容了,这边可以写任意的布局文件,上面的这个NavigationView也是谷歌官方的Design Support库中提供的一个控件,具体用法就上面这样,该控件也分为两部分显示,跟手机qq类似,这边需要注意的一个点是 这里控件的layout_gravity必须指定,我们需要告诉DrawerLayout滑动菜单是在屏幕的左边还是右边,指定left表示滑动菜单在左边,指定right表示滑动菜单在右边。这边指定为start,表示会根据系统语言进行判断,如果系统语言是从左往右的,比如英语,汉语,滑动窗口就在左边,如果系统语言是从右往左的,不如阿拉伯语,滑动窗口就在右边。
下面是他的header文件和menu文件。
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:app=“http://schemas.android.com/apk/res-auto”
android:layout_width=“match_parent”
android:padding=“10dp”
android:layout_height=“180dp”>
<de.hdodenhof.circleimageview.CircleImageView
android:id=“@+id/iconimage”
android:layout_width=“100dp”
android:layout_height=“100dp”
android:layout_centerInParent=“true”
android:src=“@drawable/pig”
/>
<TextView
android:id=“@+id/mail”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_alignParentBottom=“true”
android:text=“avdsda@163.com”
android:textColor=“#FFF”
android:textSize=“16sp”
/>
<TextView
android:id=“@+id/name”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_above=“@+id/mail”
android:text=“蔡虚鲲”
android:textColor=“#FFF”
android:textSize=“16sp”/>
<?xml version="1.0" encoding="utf-8"?><item android:id=“@+id/nav_call”
android:title=“电话”
android:icon=“@drawable/call”/>
<item android:id=“@+id/nav_friends”
android:title=“好友”
android:icon=“@drawable/friend”/>
<item android:id=“@+id/nav_mail”
android:title=“邮箱”
android:icon=“@drawable/mail”/>
<item android:id=“@+id/nav_address”
android:title=“地址”
android:icon=“@drawable/address”/>
<item android:id=“@+id/task”
android:title=“任务”
android:icon=“@drawable/task”/>
<item android:id=“@+id/setting”
android:title=“设置”
android:icon=“@drawable/setting”/>
对menu没什么好说的,上面header文件中,CircleImageView,顾名思义就是显示一个圆形图片,具体用法可以参照我的写法。理论上来说这样就算可以了,运行程序后在屏幕的左边向右滑动一下就可以显示出我们刚刚写的滑动菜单了,如图:
然后向左滑动或者点击菜单以外的区域,都可以让滑动菜单关闭,从而回到主界面。无论是展示还是隐藏滑动菜单,都是有非常流畅的国度动画的。等等!这样还不够!如果只是这样,你开发者当然知道这里有一个滑动菜单,但是用户却不知道,所以我们需要设置一个引导。
首先我们需要准备一张导航按钮的图片,包括上面用到的矢量图标们都可以去 https://www.easyicon.net/iconsearch/add/?s=addtime_DESC 下载,你也可以去阿里的矢量图标库下载,地址如下:https://www.iconfont.cn/ ,下载完放到drawable目录下。下面在MainActivity中修改。
package com.example.reader;
import android.app.Activity;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity {
private DrawerLayout drawer=null;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
最后
为了方便有学习需要的朋友,我把资料都整理成了视频教程(实际上比预期多花了不少精力)
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
- 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!
- 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。
加油,共勉。
你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!
- 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。
加油,共勉。