导航抽屉(menudrawer)Android 5(棒棒糖)风格

导航抽屉(menudrawer)Android 5(棒棒糖)风格,android,drawable,navigation-drawer,android-5.0-lollipop,Android,Drawable,Navigation Drawer,Android 5.0 Lollipop,我正在我的项目中使用menudrawer库(这个:) 我正在更新我的应用程序,使其与API21(Android 5棒棒糖)和材质设计兼容。当您将此库与API21 menudrawer图标一起使用时,它看起来很糟糕 我想实现您可以在新的Play Store中看到的过渡(新的menudrawer图标过渡到箭头) 最好的方法是什么?这个图书馆有可能吗?目前我认为唯一的解决方案是定制绘图。但也许我可以用某种方式使用本地drawable?好的。我花了几个小时使用新的API,我认为对我来说最好的方法是将我

我正在我的项目中使用menudrawer库(这个:)

我正在更新我的应用程序,使其与API21(Android 5棒棒糖)和材质设计兼容。当您将此库与API21 menudrawer图标一起使用时,它看起来很糟糕

我想实现您可以在新的Play Store中看到的过渡(新的menudrawer图标过渡到箭头)


最好的方法是什么?这个图书馆有可能吗?目前我认为唯一的解决方案是定制绘图。但也许我可以用某种方式使用本地drawable?

好的。我花了几个小时使用新的API,我认为对我来说最好的方法是将我的抽屉从lib重写为原生抽屉布局

但这可能对有类似问题的人有用。我已经创建了带有抽屉布局的测试项目(AndroidStudio->New project with menudrawer)

然后我看到了同样的问题。错误的图标。如果您想看到Android 5.0的精美动画和良好图标,请确保使用:

import android.support.**v7**.app.ActionBarDrawerToggle;
注意v7。默认情况下,Fragment类具有v4导入,然后您将不会看到良好的图标


还有一件事。更改为v7后,需要将ActionBarDrawerToggle函数修复为新构造函数。就这样。您将看到新的抽屉图标。

首先,请确保更新到最新的SDK。在Android Studio中创建新项目,然后在buid.gradle中添加appcompat-v7.21.0.+和appcompat-v4.21.0.+库作为gradle依赖项

compile 'com.android.support:appcompat-v7:21.0.2'
compile 'com.android.support:support-v4:21.0.2'
在color.xml文件中添加primaryColor和primarycolorDark

<resources>
<color name="primaryColor">#2196F3</color>
<color name="primaryColorDark">#0D47A1</color>
</resources>
<resources>
<string name="app_name">Lollipop Drawer</string>
<string name="action_settings">Settings</string>
<string name="drawer_open">open</string>
<string name="drawer_close">close</string>
</resources>

#2196F3
#0D47A1
在strings.xml文件中添加抽屉打开/关闭字符串值

<resources>
<color name="primaryColor">#2196F3</color>
<color name="primaryColorDark">#0D47A1</color>
</resources>
<resources>
<string name="app_name">Lollipop Drawer</string>
<string name="action_settings">Settings</string>
<string name="drawer_open">open</string>
<string name="drawer_close">close</string>
</resources>

棒棒糖抽屉
设置
打开
关闭
您的activity_my.xml布局文件如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">

<include layout="@layout/toolbar" />


<android.support.v4.widget.DrawerLayout
    android:layout_width="match_parent"
    android:id="@+id/drawerLayout"
    android:layout_height="match_parent">

    <!-- activity view -->
    <RelativeLayout
        android:layout_width="match_parent"
        android:background="#fff"
        android:layout_height="match_parent">

        <TextView
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"
            android:textColor="#000"
            android:text="Activity Content"
            android:layout_height="wrap_content" />
    </RelativeLayout>

    <!-- navigation drawer -->
    <RelativeLayout
        android:layout_gravity="left|start"
        android:layout_width="match_parent"
        android:background="#fff"
        android:layout_height="match_parent">

        <ListView
            android:id="@+id/left_drawer"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:divider="#eee"
            android:background="#fff"
            android:dividerHeight="1dp" />
    </RelativeLayout>

</android.support.v4.widget.DrawerLayout>

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content">

</android.support.v7.widget.Toolbar>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nkdroid.com.lollipopdrawer" >

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/myAppTheme" >
    <activity
        android:name=".MyActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>


查看Android团队于2015年5月发布的新棒棒糖组件


为什么不在Android 5.0 SDK中使用appcompat-v7库?它内置了此动画。@alanv但要使用appcompat-v7,您的意思是-从我的项目中删除menudrawer并使用本机的?目前这是有问题的。我的意思是使用支持库中的抽屉布局。看起来menudrawer提供了完全相同的功能,但是DrawerLayout是为了工作ActionBarDrawerToggle(这就是提供此动画的原因)。@alanv我已经用NagivationDrawer检查了Android Studio中的DrawerLayout-wizard项目(目标API为21)。图标是相同的-(N5的屏幕截图和昨天的L)我在使用支持库中的默认抽屉布局时看到了相同的情况。ActionBarDrawerToggle的v4版本已被弃用。请参阅。@adek-这甚至适用于运行android api 10级的设备,是吗?或者我们需要为这些api级别的转换效果单独编码吗?@Rat-a-tat-a-tatratouille问得好。我读到它应该与API10一起工作。我现在用的是14+的。非常感谢。我尽一切努力使图标正确,但没有任何效果。然后我看到了这个,瞧!您为我节省了许多紧张的时间。有关更改为新构造函数的确切说明,请参阅
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nkdroid.com.lollipopdrawer" >

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/myAppTheme" >
    <activity
        android:name=".MyActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>