实现类似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):
build.gradle
文件中删除compile'com.ninealdroids:library:2.4.0'
,并将minSdk
设置为11com.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);
}
}