实现类似android L中的NavigationDrawer图标

实现类似android L中的NavigationDrawer图标,android,android-5.0-lollipop,Android,Android 5.0 Lollipop,如何实现Android L中的导航抽屉图标 我已经更新了play store应用程序,可以在其中看到导航抽屉的图标,如: 这里最大的变化是新的“汉堡””按钮,它更大,与左边缘隔开,不再有类别图标。点击它会打开侧菜单,图标会变成一个带有平滑动画的后退箭头 在较低版本的android中是否可以实现同样的功能 有任何示例或样本吗?编辑-10月18日 从10月17日起,不再需要使用第三方库进行此操作。谷歌刚刚发布了安卓5.0SDK和一个新的V7AppCompat库。新的v7 appcompat和更新了A

如何实现
Android L
中的导航抽屉图标

我已经更新了play store应用程序,可以在其中看到导航抽屉的图标,如:

这里最大的变化是新的“
汉堡”
”按钮,它更大,与左边缘隔开,不再有类别图标。点击它会打开侧菜单,图标会变成一个带有平滑动画的后退箭头

在较低版本的android中是否可以实现同样的功能

有任何示例或样本吗?

编辑-10月18日 从10月17日起,不再需要使用第三方库进行此操作。谷歌刚刚发布了安卓5.0SDK和一个新的
V7AppCompat库
。新的v7 appcompat和更新了ActionBarDrawerToggle,其中包含指向箭头动画的菜单
因此,为了让Burger to Arrow动画出现在NavigationDrawer中,您只需像以前一样使用新的ActionBarDrawerToggle(导入
android.support.v7.app.ActionBarDrawerToggle
)和NavigationDrawer(请参阅)


虽然提供了汉堡图标和箭头之间所需的转换,但它缺少在“标准”操作栏中使用的选项。为此,您应该考虑使用库<强> <强> >p> 库本身的使用可能很简单,但如果您以前使用过
ActionBarDrawerToggle
,则应该将其删除

对于希望使用
DrawerLayout
而不使用ActionBarDrawerToggle,而是使用
MaterialMenu
库的每个人,下面只介绍一点“操作方法”:

1-在build.gradle文件中添加库 2-初始材料菜单图标 3-设置抽屉定位器并相应更改IconState 注意:
isDrawerOpened
应为全局变量

4-打开/关闭导航抽屉 将此项添加到选项项Selected(菜单项)

注意:因为我们没有使用ActionBarDrawerToggle,所以我们只能自己做

可以找到保存菜单图标状态等进一步的步骤

编辑 如MaterialMenu所述,出于兼容性原因,使用了
Nineodeldroid
。如果您不希望这样做,因为您的应用程序只支持API级别11及以上,那么以下是您大致需要做的事情(尽管我认为这可能不值得这么麻烦,而且您只需要节省39kb):

  • 从GitHub下载库
  • 将其作为新模块导入到项目中
  • 将其设置为应用程序模块的依赖项
  • 从库的
    build.gradle
    文件中删除compile
    'com.ninealdroids:library:2.4.0'
    ,并将
    minSdk
    设置为11
  • 删除所有导入引用
    com.nineodeldroid.*

  • 随着Google发布新的支持库,您可以在本页中看到如何实现此效果。

    此库可能会引起您的兴趣:最初出现了一些错误,如
    ResourceNotFoundexception
    ,但我解决了它。该库还包括
    nineodeldroid
    。是否可以不使用
    nineodeldroid
    ?因为我的目标版本是
    HoneyComb
    意味着不需要
    Nineodeldroid
    ,因此可以减少应用程序大小。这是可能的,请参阅我的编辑。虽然我不得不说这不值得,但你只能节省39kb。
    dependencies {
        //...
        compile 'com.balysv.materialmenu:material-menu:1.3.1'
    }
    
    materialMenu = new MaterialMenuIcon(this, Color.WHITE, MaterialMenuDrawable.Stroke.THIN);
    
       mDrawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                materialMenu.setTransformationOffset(
                        MaterialMenuDrawable.AnimationState.BURGER_ARROW,
                        isDrawerOpened ? 2 - slideOffset : slideOffset
                );
            }
    
            @Override
            public void onDrawerOpened(View drawerView) {
                isDrawerOpened = true;
            }
    
            @Override
            public void onDrawerClosed(View drawerView) {
                isDrawerOpened = false;
            }
        });
    
       if(item.getItemId() == android.R.id.home) {
            if (mDrawerLayout.isDrawerVisible(GravityCompat.START)) {
                mDrawerLayout.closeDrawer(GravityCompat.START);
            } else {
                mDrawerLayout.openDrawer(GravityCompat.START);
            }
        }