Android recyclerview视图持有者的内部视图动画

时间:2016-02-17 15:15:03

标签: android animation android-recyclerview

我正在使用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);

我做错了什么?

1 个答案:

答案 0 :(得分:2)

所以我遇到的问题是我在Adapter中制作动画。其中陈述here是一种错误的做法。

在这种情况下我们想要做的是创建一个扩展DefaultItemAnimator的类,覆盖animateChange方法并将自定义动画放在那里。

现在问题在于你不知道你的观点持有者的状态。有时,您希望在单击按钮时为持有者设置动画。要解决这个问题,你可以在视图持有者中使用标志,你将在animateChange方法中引用它。

然后您想要调用recyclerView.setItemAnimator(动画师)并传入您的类的实例。