我正在使用expandable recycler view,我正在尝试在ViewView的孩子ImageView上制作旋转动画。我在某个按钮上设置了一个点击监听器,在那里我调用了执行动画的animateIconExpansion方法:
private void animateIconExpansion(ImageView expandIcon, boolean isExpanded) {
ObjectAnimator animator = ObjectAnimator.ofFloat(this.expandIcon, "rotation", rotationEnd - 180f, rotationEnd);
animator.setDuration(1000);
animator.start();
}
问题是动画无法正常工作。我尝试使用3.0中引入的animate API,但它没有用。我也尝试过RotateAnimation,它不起作用:
RotateAnimation rotateAnim = new RotateAnimation(rotationEnd - 180f, rotationEnd,
RotateAnimation.RELATIVE_TO_SELF, 0.5f,
RotateAnimation.RELATIVE_TO_SELF, 0.5f);
rotateAnim.setDuration(200);
rotateAnim.setFillBefore(true);
expandIcon.startAnimation(rotateAnim);
我做错了什么?
答案 0 :(得分:2)
所以我遇到的问题是我在Adapter中制作动画。其中陈述here是一种错误的做法。
在这种情况下我们想要做的是创建一个扩展DefaultItemAnimator的类,覆盖animateChange方法并将自定义动画放在那里。
现在问题在于你不知道你的观点持有者的状态。有时,您希望在单击按钮时为持有者设置动画。要解决这个问题,你可以在视图持有者中使用标志,你将在animateChange方法中引用它。
然后您想要调用recyclerView.setItemAnimator(动画师)并传入您的类的实例。