我的活动延伸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应用程序之类的东西。如果我们在电子邮件列表中并按下一封电子邮件,它会动画到箭头并显示电子邮件的内容,如果我们按箭头,它会激活到汉堡包并显示电子邮件列表。
答案 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
检索解决方案