导航抽屉动画,drawerOpen被调用两次

时间:2014-12-25 12:11:38

标签: java android navigation-drawer

我正在尝试在我的一个视图上打开导航抽屉上运行动画,以下是我的代码:

public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle(mDrawerTitle);
                System.out.println("Called");

                ObjectAnimator animation = ObjectAnimator.ofInt(pw, "progress", 200); 
                animation.setDuration(1000);
                animation.setInterpolator(new DecelerateInterpolator());
                animation.start();
                //      mDrawerList.setLayoutAnimation(getMaximAnim());

                invalidateOptionsMenu();
            }
        };

每当我打开抽屉时,控制台都会打印Called两次,这意味着动画会发生两次,并且会以这种方式抖动。我想只为一次视图制作动画,我哪里出错了,有什么提示?

这是我的抽屉滑动代码:

public void onDrawerSlide(View drawerView, float slideOffset) {
            if(slideOffset > .55 && !drawerOpen){
                onDrawerOpened(drawerView);
                drawerOpen = true;
            } else if(slideOffset < .45 && drawerOpen) {
                onDrawerClosed(drawerView);
                drawerOpen = false;
            }
        } 

我参考了here

1 个答案:

答案 0 :(得分:1)

您不需要

onDrawerOpened(drawerView);
你的onDrawerSlide中的

。它由Android本身调用。至于更改标题,请看:

public void restoreActionBar(){
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle(mTitle);
}

并在另一部分代码中将mTitle设置为您喜欢的任何字符串。