android - 我可以以编程方式打开带有动画的抽屉布局吗?

标签 android android-support-library navigation-drawer

我使用以下库创建了应​​用程序抽屉: http://developer.android.com/training/implementing-navigation/nav-drawer.html

我想在打开应用程序时显示带有动画的抽屉导航。 我该怎么做?

最佳答案

预绘制监听器,也就是安全通道

这是预绘制监听器示例。它会尽快开始动画,这可能有点太快了。您可能希望将此与第二个显示的可运行文件结合起来。我不会将两者结合起来,只会分开显示。

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    // Building NavDrawer logic here. Just a method call would be best.
    ...

    ViewTreeObserver vto = drawer.getViewTreeObserver();
    if (vto != null) vto.addOnPreDrawListener(new ShouldShowListener(drawer));
}

private static class ShouldShowListener implements OnPreDrawListener {

    private final DrawerLayout drawerLayout;

    private ShouldShowListener(DrawerLayout drawerLayout) {
        this.drawerLayout= drawerLayout;
    }

    @Override
    public boolean onPreDraw() {
        if (view != null) {
            ViewTreeObserver vto = view.getViewTreeObserver();
            if (vto != null) {
                vto.removeOnPreDrawListener(this);
            }
        }

        drawerLayout.openDrawer(Gravity.LEFT);
        return true;
    }
}

PostDelay Runnable,又名生活危险

// Delay is in milliseconds
static final int DRAWER_DELAY = 200;

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    // Building NavDrawer logic here. Just a method call would be best.
    ...
    new Handler().postDelayed(openDrawerRunnable(), DRAWER_DELAY);
}

private Runnable openDrawerRunnable() {
    return new Runnable() {

        @Override
        public void run() {
            drawerLayout.openDrawer(Gravity.LEFT);
        }
    }
}

警告

如果他们第一次在应用程序启动时轮换BOOM!阅读这篇博文了解更多信息http://corner.squareup.com/2013/12/android-main-thread-2.html .最好的办法是使用预绘制监听器或在 onPause 中删除您的可运行文件。

关于android - 我可以以编程方式打开带有动画的抽屉布局吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18070831/

相关文章:

android - 在文本输入布局android之外单击时如何将 float 标签文本重置为其原始位置

android - 在Navigation-Drawer的抽屉中加载自定义fragment,并在主布局中打开对应的fragment

android - 如何从 URI 获取完整的文件路径

java - gradle:编译android junit测试apk文件

android - kitkat 中的 CardView 和 RecyclerView

java - 如何在抽屉导航中显示图像

java - 无法在抽屉导航 fragment 中包含 RecyclerView

android - 单击它以全屏显示图像

android - ScrollView 中的 ViewPagerIndicator

java - Android Studio 外部 jar 错误