所以我在这个问题上有点晚了(只是遇到了同样的问题).您可以使用DrawerArrowDrawablev7支持库中的基础drawable .它根据它的进度处理绘图,setProgress(floatValue)但您需要处理状态之间的动画.我用它包装它来做到这一点ValueAnimator.见下面的例子:
final DrawerArrowDrawable drawable = new DrawerArrowDrawable(this);
ImageView imageView = (ImageView)findViewById(R.id.imageView);
imageView.setImageDrawable(drawable);
ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override public void onAnimationUpdate(ValueAnimator animation) {
drawable.setProgress((Float)animation.getAnimatedValue());
}
});
...
// burger to arrow
animator.start();
...
// arrow to burger
animator.reverse();
Run Code Online (Sandbox Code Playgroud)
这是一个来自生产应用程序的未经测试的适应,应该工作:-)