繁体   English   中英

如何在“回收者视图”中为视图设置动画

[英]How to animate views inside the Recycler View

我有一个可扩展的RecyclerView节 ,在其中单击某个特定项目会在其下方添加一些项目。

部分标题行具有向下箭头,如果展开,则将其更改为向上箭头。 默认的动画会淡化整个节标题行,我想是的。

单击该行时,如何选择将箭头动画180度,而不仅仅是将图像源更改为其他图标。 更为合适的问题是: 适配器内的哪里更新此视图? 哪种方法? 当我尝试在onCreateView()onBindViewHolder()使用ObjectAnimators时,它并不总是有效。

有更好的方法/解决方案吗?

尝试使用

animateListItem(view, prevPosition < position); 

要么

setLayoutAnimation

在适配器的getViewonBindViewHolder方法中:

public static void setLayoutAnimation(Activity activity, ListView listView, Integer anim, int duration) {
  anim = (anim == null || anim == 0 ) ? R.anim.abc_slide_in_bottom : anim;
  Animation animation = AnimationUtils.loadAnimation(activity, anim);

  duration = duration <= 0 ? 500 : duration;
  animation.setDuration(duration);
  LayoutAnimationController controller = new LayoutAnimationController(animation, 1.0f);
  listView.setLayoutAnimation(controller);
}

public static Animation slideFromTop, slideFromBottom;

public static void initAnim(Activity activity)
{
  slideFromTop = AnimationUtils.loadAnimation(activity, R.anim.abc_slide_in_top);
  slideFromTop.setDuration(500);

  slideFromBottom = AnimationUtils.loadAnimation(activity, R.anim.abc_slide_in_bottom);
  slideFromBottom.setDuration(500);
}

public static void animateListItem(Activity activity, View view, boolean slideInBottom) {
  try {

    if (slideInBottom)
    {
      view.startAnimation(slideFromBottom);
    }
    else
    {
      view.startAnimation(slideFromTop);
    }

  } catch (Throwable t) {
    t.printStackTrace();
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM