ActionBarDrawerToggle是一个开关,用于打开/关闭DrawerLayout抽屉

ActionBarDrawerToggle 提供了一个方便的方式来配合DrawerLayout和ActionBar,以实现推荐的抽屉功能。

即点击ActionBar的home按钮,即可弹出DrawerLayout抽屉。

在Activity中的两个回调函数中使用它:

onConfigurationChanged
   onOptionsItemSelected

调用ActionBarDrawerToggle.syncState() 在Activity的onPostCreate()中;指示,ActionBarDrawerToggle与DrawerLayout的状态同步,并将ActionBarDrawerToggle中的drawer图标,设置为ActionBar的Home-Button的icon

关于DrawerLayout就不多说了,请移步这里 http://blog.csdn.net/jjwwmlp456/article/details/38682637

在这个官方的例子中,已经实现了本文所要讲述的内容。

整体的效果呢,需要支持ActionBar,support-v7包的 compat中有 ActionBarActivity可继承, 3.0以后也可以用主题的方式直接使用。不多说了

几个主要的函数调用

    1. ActionBarDrawerToggle mDrawerToggle;
    2. DrawerLayout mDrawerLayout;
    3. void init() {
    4. mDrawerLayout.setDrawerListener(new MyDrawerListener());//设置drawer的开关监听
    5. mDrawerToggle = new ActionBarDrawerToggle(activity, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close);
    6. }
    7. /** activity创建完成后 */
    8. @Override
    9. protected void onPostCreate(Bundle savedInstanceState) {
    10. super.onPostCreate(savedInstanceState);
    11. mDrawerToggle.syncState();//该方法会自动和actionBar关联, 将开关的图片显示在了action上,如果不设置,也可以有抽屉的效果,不过是默认的图标
    12. }
    13. /** 菜单键点击的事件处理 */
    14. @Override
    15. public boolean onOptionsItemSelected(MenuItem item) {
    16. return mDrawerToggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item);
    17. }
    18. /** 设备配置改变时 */
    19. @Override
    20. public void onConfigurationChanged(Configuration newConfig) {
    21. super.onConfigurationChanged(newConfig);
    22. mDrawerToggle.onConfigurationChanged(newConfig);
    23. }
    24. /** drawer的监听 */
    25. private class MyDrawerListener implements DrawerLayout.DrawerListener {
    26. @Override
    27. public void onDrawerOpened(View drawerView) {// 打开drawer
    28. mDrawerToggle.onDrawerOpened(drawerView);//开关状态改为opened
    29. }
    30. @Override
    31. public void onDrawerClosed(View drawerView) {// 关闭drawer
    32. mDrawerToggle.onDrawerClosed(drawerView);//开关状态改为closed
    33. }
    34. @Override
    35. public void onDrawerSlide(View drawerView, float slideOffset) {// drawer滑动的回调
    36. mDrawerToggle.onDrawerSlide(drawerView, slideOffset);
    37. }
    38. @Override
    39. public void onDrawerStateChanged(int newState) {// drawer状态改变的回调
    40. mDrawerToggle.onDrawerStateChanged(newState);
    41. }
    42. }

最新文章

  1. DOM对象模型接口规范中的四个基本接口
  2. 使用java读取文件夹中文件的行数
  3. Android开发学习之路-Service和Activity的通信
  4. maven 错误解决办法集
  5. knn原理与实践
  6. 【CITE】C#默认以管理员身份运行程序实现代码
  7. poj 2449 Remmarguts' Date K短路+A*
  8. 实现系统函数time,获取当前时间与UTC的间隔
  9. DJANGO变动库的一次真实手动经历
  10. 如果将WCF服务发布为rest模式
  11. 十四、mysql 分区之 HASH && KEY
  12. Android设备信息、感应器检测
  13. FCKeditor 插件开发 示例
  14. Android中振动器(Vibrator)的使用
  15. 创建内向交货单 BBP_INB_DELIVERY_CREATE
  16. Python实现LDAP用户名密码验证
  17. 【floyd 多源最短路】 poj 1125
  18. thymeleaf模板的使用(转)
  19. 微信小程序开发•模块化
  20. beta冲刺3/7

热门文章

  1. H5前端面试题及答案(1)
  2. Oracle之自动收集统计信息
  3. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q45-Q47)
  4. mac java 环境设置
  5. 【读书笔记】iOS-KVC
  6. [android] 手机卫士设置向导页面
  7. IOS设计模式-备忘录模式
  8. XCode的安装包校验伪真
  9. 输入 cc -c 指令出现问题
  10. Memcache笔记04-Memcached机制深入了解