Android RecyclerView在滚动时重新设置视图动画
我想动画的看法,点击它。我正在使用Android RecyclerView在滚动时重新设置视图动画,android,scroll,android-recyclerview,android-animation,Android,Scroll,Android Recyclerview,Android Animation,我想动画的看法,点击它。我正在使用AnimatorSet 但当用户在那个时候滚动动画的状态是不正确的保持或者不清晰动画。它将设置其他项目图标的动画。 有人对此有想法吗 动画方法: public static void likeAnimation(Object object) { if (object == null) { return; } AnimatorSet set = new AnimatorSet();
AnimatorSet
但当用户在那个时候滚动动画的状态是不正确的保持或者不清晰动画。它将设置其他项目图标的动画。
有人对此有想法吗
动画方法:
public static void likeAnimation(Object object) {
if (object == null) {
return;
}
AnimatorSet set = new AnimatorSet();
Object myView = object;
set.setInterpolator(new LinearInterpolator());
set.playTogether(
ObjectAnimator.ofFloat(myView, "rotation", 0, 360)
);
set.setDuration(500).start();
}
RecyclerView代码:
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
holder.imageView_like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
likeAnimation(v);
}
}
你正好赶上这个问题,我希望我不会太晚。这里的想法很简单。您必须记住,您的
RecyclerView
重用了曾经创建的每个ViewHolder
。通常,它会创建7~8个项目,但这取决于屏幕大小。因此,在您的特定情况下,如果您希望在单击时为项目设置动画,则必须跟踪
RecyclerView
中每个项目的状态。基本上,您可以有三种状态:
状态或您的动画。当用户单击列表中的某个项目时,您将开始设置该项目的动画,并在动画结束时将该项目的状态切换到输入
动画状态。
状态。这是已设置动画的项目的状态,不再需要此动画,因此当用户向上/向下滚动时,只需将视图设置为动画状态。在您的情况下,可以尝试以下代码:已设置动画
private void animatedState(View view){ //perform the same action but without animation view.setRotation(360); }
状态或正常状态。这就是没有旋转的默认
,只是正常状态。视图
例如,
private void defaultState(View view){ view.setRotation(0); }
退出
状态,然后从该状态切换到默认
状态
你可以通过这个找到这个想法的整个实现。基本上,回收者视图是重用视图,这将通过布局管理器实现。滚动时,动画将显示为连续项。可以编写逻辑-开始滚动时停止动画。当您重写
onScroll()
方法时,您就知道回收器视图是否在滚动。在这种情况下,你可以停止animation@Navaspk是的,每次recyclerView调用onCreateViewHolder时,我都会使用clearAnimation()
作为这个视图,并且我也将clearAnimation
应用到onViewDetachedFromWindow(ViewHolder holder)
中,但它仍然在制作动画,并且没有保持状态或停止动画。如果可能,则建议代码或其他。非常感谢。