android中NavigationDrawer的使用以及添加drawer切换时的动画效果

本文分享了在Android开发中实现NavigationDrawer时添加汉堡图标与箭头图标切换动画的过程,适用于API level 2.3及以上。文章介绍了如何添加第三方库或使用appcompat-v21包来实现这一效果,并提供了布局文件的设置示例,以及相关参考文献。
摘要由CSDN通过智能技术生成

最近在开发app的时候需要用到NavigationDrawer,但是在添加动画(汉堡图标和箭头图标互转)效果的时候老是出现问题,折腾了好几个小时终于搞定。在这里跟大家分享一下。说明下,我开发时候用的minSdkVersion 是9,也就是本文所说的方法适用于APIlevel 2.3以上的情况,但若minsdk比较高的话会有略微的差异。


1.效果及依赖

NavigationDrawer是Material Design中推崇的一种控件,网易新闻、知乎都有在使用,先上效果图:


图中开启、关闭NavigationDrawer时左上角的动画是通过github上的一个第三方库实现的,详情请见:https://github.com/ikimuhendis/LDrawer

不过前段时间android官方的appcompat-v21包已经开始支持这种效果了。如果你用的是android studio,只需要在app module的build.gradle文件中添加

dependencies {
    compile "com.android.support:appcompat-v7:21.0.+"
}
然后sync(同步)一下就可以使用appcompat包了。此外项目还依赖了support-v4的包,所以在请在dependencies中再加上这一句:

compile 'com.android.support:support-v4:22.0.0'


2.实现步骤

我们以一个MainActivity以及一个左侧拉出的NavigationDrawer为例说明。首先在layout文件夹下边定义一个toolbar.xml,定义Toolbar的样式。

toolbar.xml:

<?xml version="1.0" encoding=
Android Studio,"BottomNavigationView"模板通常用于创建一个底部导航栏,它允许用户通过触摸屏幕底部的不同选项来切换界面之间的内容。当与"Navigation Drawer"结合,你可以在应用创建一个抽屉式侧边栏菜单,这在许多现代移动应用设计非常常见。 要在现有的"BottomNavigationView"模板项目添加Navigation Drawer,你需要做以下步骤: 1. **添加Navigation Drawer组件**: - 打开`activity_main.xml`布局文件。 - 在XML布局添加一个`DrawerLayout`,它是Navigation Drawer的基础容器。 - 内部添加一个`NavigationView`作为抽屉的主要内容。 ```xml <androidx.drawerlayout.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- Your BottomNavigationView here --> <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_nav_view" android:layout_width="match_parent" android:layout_height="wrap_content" app:menu="@menu/bottom_navigation_menu" /> <!-- The content view for the main screen --> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent"/> </androidx.drawerlayout.widget.DrawerLayout> ``` 2. **设置Navigation Drawer内容**: - 创建一个新的菜单资源文件`@menu/bottom_navigation_menu`,添加各个选项对应的`MenuItem`和它们关联的Activity或Fragment。 3. **处理抽屉的打开与关闭**: - 在你的`Activity`或`Fragment`,需要监听`DrawerLayout`的变化,并在适当的候设置`NavigationView`的当前选项,以及管理`content_frame`的显示隐藏。 4. **初始化并绑定Navigation Drawer**: - 在`onCreate()`方法,获取`NavigationView`和`DrawerLayout`实例,并设置适配器和监听事件。 ```java NavigationView navigationView = findViewById(R.id.bottom_nav_view); NavigationViewDrawerToggle drawerToggle = new NavigationViewDrawerToggle( this, // host activity drawerLayout, // DrawerLayout object R.drawable.ic_drawer, // nav drawer icon to replace 'open抽奖' R.string.navigation_drawer_open, // "open drawer" description for accessibility R.string.navigation_drawer_close // "close drawer" description for accessibility ); drawerLayout.addDrawerListener(drawerToggle); navigationView.setNavigationItemSelectedListener(drawerToggle); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值