Android Studio中DrawerLayout.addDrawerListener()的作用及必要性疑问
关于ActionBarDrawerToggle与drawerLayout.addDrawerListener()的作用解析
你提到删除drawerLayout.addDrawerListener(actionBarDrawerToggle)后,点击汉堡图标仍能打开抽屉,这是因为ActionBarDrawerToggle在构造时传入了toolbar,它已经直接绑定了汉堡图标的点击事件——这部分逻辑不需要依赖addDrawerListener就能工作。
但addDrawerListener的核心作用是监听抽屉状态变化的事件,也就是官方说的"drawer events",具体包含以下几种场景:
- onDrawerSlide:抽屉开始被拖动(处于滑动过程中)时触发,比如你可以用这个回调做UI联动动画,比如随着抽屉滑动改变Toolbar的透明度、或者移动页面内容
- onDrawerOpened:抽屉完全展开后触发,比如在这里隐藏ActionBar的标题、切换状态栏的颜色,或者加载抽屉里的动态数据
- onDrawerClosed:抽屉完全收起后触发,比如恢复ActionBar的标题、重置页面的交互状态
- onDrawerStateChanged:抽屉的状态发生切换时触发(比如从静止变为滑动、滑动变为静止),可以用来区分用户是手动拖动抽屉,还是点击汉堡图标触发的开闭
如果不调用addDrawerListener,你会丢失这些关键的状态监听能力,最直观的表现就是:汉堡图标不会随着抽屉的展开/收起自动切换成返回箭头(ActionBarDrawerToggle默认会处理这个图标切换逻辑),同时你也无法针对抽屉的开闭、滑动状态做任何自定义的交互逻辑。
内容的提问来源于stack exchange,提问作者steeveKA1
相关产品推荐
相关产品推荐

