本篇文章主要介绍了"最详细的 Android NavigationDrawer 开发实践总结",主要涉及到方面的内容,对于Android开发感兴趣的同学可以参考一下:
继前面写的两篇文章之后( 有问题欢迎反馈哦 ):Android开发:Translucent System Bar 的最佳实践Android开发:最详细的 Too...
compile 'com.android.support:design:23.1.1'
这里因为我工程配置的 compileSdkVersion 是 23 ,所以需要引入 com.android.support:design:23.x.x 的版本。需要吐槽的是,这里如果你引入了 com.android.support:design:23.1.0 ,工程运行后 NavigationView 会报一个 android.view.InflateException:xxxxxx 的错误(又是一个大坑)。
接下来简单的介绍一下 NavigationView 的使用,我们继续看看几个相关布局文件 layout/activity_simple_navigation_drawer.xml 、 layout/navigation_drawer_header.xml 、 menu/navigation_drawer_menu.xml 和 实现效果:
layout/activity_simple_navigation_drawer.xml
layout/navigation_drawer_header.xml
menu/navigation_drawer_menu.xml
最终得到下面的效果

activity_simple_navigation_drawer.xml实现效果
总的来说, NavigationView 比较关键的属性就只有 app:headerLayout 和 app:menu ,它们分别对应效果图中顶部的 紫色区域(layout/navigation_drawer_header.xml) 和 下方的 填充菜单项(menu/navigation_drawer_menu.xml) 。其实是用起来也和 DrawerLayout 一样,非常简单。
不实用的 NavigationView
其实谈到 NavigationView,个人认为它设计并不实用,而且是比较呆板的。最直接的一点是,它的菜单图标

NavigationView默认图标颜色
第一次运行代码的时候,把我五颜六色的图标居然跑出来这效果,差点没一口水喷在屏幕上。好在代码中可以调用下面这个API
mNavigationView.setItemIconTintList(null);//设置菜单图标恢复本来的颜色
还原菜单图标庐山真面目。(着实看不懂 Google 的设计了…)
其次,是关于菜单相中图标大小和文字间距之类的设置,从 Google 的设计文档来看,

NavigationView设计
NavigationView 基本已经规定设置好了大小距离,留给我们可以改动的空间并不多。如果你想调整一下菜单的布局宽高之类的,基本是不可能的了(即使可能,也估计非常蛋疼)。所以,目前我基本还没见过国内哪个 app 是直接使用了 NavigationView 来做导航(如果有的话,欢迎告知一下)。
以上关于 NavigationView 不实用,仅是本人的一些看法,如果你有不同看法,欢迎留言讨论。为了加深一下 NavigationDrawer 设计的实践,下面来大致的模仿实现网易云音乐的导航效果。
仿网易云音乐的 NavigationDrawer 实现
先来看看网易云音乐的效果

云音乐导航菜单
主要就是一个线性布局的菜单并结合了 Translucent System Bar 的特性(还不知道的童鞋请看我前面写的文章哈),下面就直接看看大致实现的布局文件 :