动画工具栏图标以编程方式

时间:2015-06-30 15:36:32

标签: android

我的活动延伸AppCompatActivity

我以这种方式设置Toolbar

    mToolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(mToolbar);
    actionBar = getSupportActionBar();
    assert actionBar != null;
    actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setDisplayShowHomeEnabled(true);

当我打开或关闭Toolbar时,要设置NavigationView图标的动画,我执行此操作:

    actionBarDrawerToggle =
            new ActionBarDrawerToggle(this, mNavigationDrawer, R.string.open_drawer,
                    R.string.close_drawer);
    mNavigationDrawer.setDrawerListener(actionBarDrawerToggle);

    actionBarDrawerToggle.syncState();

我可以看到,当抽屉打开时,图标会向后箭头设置动画,当它关闭时,它会从箭头动画显示为汉堡包图标。

我想知道,如果不打开或关闭NavigationView,我怎么能以编程方式将图标设置为箭头并返回汉堡图标。

像gmail应用程序之类的东西。如果我们在电子邮件列表中并按下一封电子邮件,它会动画到箭头并显示电子邮件的内容,如果我们按箭头,它会激活到汉堡包并显示电子邮件列表。

1 个答案:

答案 0 :(得分:0)

对于那些在这个问题上磕磕绊绊的人,我已经设法解决了这个问题:

ValueAnimator anim = ValueAnimator.ofFloat(start, end);
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator valueAnimator) {
        float slideOffset = (Float) valueAnimator.getAnimatedValue();
        toolbarDrawerToggle.onDrawerSlide(drawerLayout, slideOffset);
    }
});
anim.setInterpolator(new DecelerateInterpolator());
// You can change this duration to more closely match that of the default animation.
anim.setDuration(500);
anim.start();

here

检索解决方案