InstaMaterial 概念设计(7) – 抽屉导航(Navigation Drawer)

712 查看

介绍

抽屉导航(Navigation Drawer) 是安卓中非常有名的一种设计模式(这不是java中的设计模式哈)。它是一个从屏幕左侧边缘滑出的一个显示app主菜单的面板。有时候它是从右侧滑入的,不过,除非你有充分的理由,否则别那么做,那是一种愚蠢的设计。

Navigation Drawer这种设计的相关文档非常丰富(不管是设计方面的还是编程方面的)。如果你想深入了解设计准则只需查看Navigation Drawer 设计准则,我们今天也不会谈论太多关于如何实现Drawer的事情,相反,我推荐你直接阅读官方文档 创建一个Navigation Drawer

在本篇文章中,不是拷贝官方文档,而是准备一个DrawerLayoutInstaller – 一个帮助我们配置并将DrawerLayout注入到Activity中的工具,可以省去每次都要弄繁琐的xml文件。

实现Navigation Drawer

准备

Before we start, let’s make some preparation by adding resources, and less meaning boilerplate.

在我们开始之前,让我们先做一些资源文件上的准备

首先添加app的menu中需要用到的所有icon:

每一个都长得像概念视频中的样子,但其实他们都是从谷歌的Material 设计图标 中获取的。

我们的菜单是基于ListView实现的,因此我们需要为list的item准备好布局。下面是三种不同的布局:

  • 带有用户头像与昵称的头部
  • 菜单按钮
  • 分割线(用在菜单按钮之间)

这里是 带有所有新源码的一个完整提交

现在我们来为全局菜单准备布局。总的来说他就是个简单的ListView,我们本可以把它放在xml中,但是考虑到我们希望将这个view注入(嵌入)到更多的Activity中,还是用纯代码更好些。

这个View的需求很简单 – 只要显示菜单项与用户的简单介绍就可以了。因此实现并不是太复杂:

GlobalMenuView.java