gpt4 book ai didi

android - ActionBarDrawerToggle - 以编程方式将汉堡包图标切换为后退图标

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:07 26 4
gpt4 key购买 nike

如何以编程方式在汉堡包图标和后退图标之间切换?

使用下面的代码我可以将汉堡包图标改回原来的样子,但我想把它改成动画

actionBarDrawerToggle.setDrawerIndicatorEnabled(false);

谢谢

最佳答案

如果您想更好地控制菜单/箭头动画,您可能需要使用 DrawerArrowDrawable直接而不是使用 ActionBarDrawerToggle 类。这需要更多的工作,因为您必须创建自己的动画师,但它允许您独立于抽屉导航更改可绘制状态。

编辑:这是一个快速的 MenuArrowDrawable 类,它扩展了 DrawerArrowDrawable 并添加了动画师。您需要做的就是将它设置为您的 ActionBar 或 Toolbar 图标,并在您希望它改变状态时调用 animateDrawable()。

public class MenuArrowDrawable extends DrawerArrowDrawable {

private final ValueAnimator mMenuToArrowAnimator;
private final ValueAnimator mArrowToMenuAnimator;

public MenuArrowDrawable(Context context) {
super(context);

ValueAnimator.AnimatorUpdateListener animatorUpdateListener = new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
setPosition((float)animation.getAnimatedValue());
}
};

mMenuToArrowAnimator = ValueAnimator.ofFloat(0f, 1f);
mMenuToArrowAnimator.setDuration(250);
mMenuToArrowAnimator.addUpdateListener(animatorUpdateListener);

mArrowToMenuAnimator = ValueAnimator.ofFloat(1f, 0f);
mArrowToMenuAnimator.setDuration(250);
mArrowToMenuAnimator.addUpdateListener(animatorUpdateListener);
}

public void setPosition(float position) {
if (position >= 1f) {
setVerticalMirror(true);
} else if (position <= 0f) {
setVerticalMirror(false);
}
setProgress(position);
}

public float getPosition() {
return getProgress();
}

public void animateDrawable(boolean menuToArrow) {
if (menuToArrow && getPosition() >= 1f) return;
if (!menuToArrow && getPosition() <= 0f) return;

ValueAnimator animator = menuToArrow? mMenuToArrowAnimator : mArrowToMenuAnimator;
if (animator.isRunning()) animator.end();
animator.start();
}
}

关于android - ActionBarDrawerToggle - 以编程方式将汉堡包图标切换为后退图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33374115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com