我有一个可扩展的,分段 RecyclerView ,点击特定项目会在其下面添加一些项目。
节标题行有一个向下箭头,然后我会在展开时更改为向上箭头。默认动画会淡化整个节标题行,我想这是好的。
如何在单击该行时选择将箭头设置为180度动画,而不是仅将图像源更改为其他图标。
更合适的问题是:哪里我在适配器内更新此视图?哪种方法?当我尝试在 onCreateView()
或 onBindViewHolder()
中使用 ObjectAnimators 时,它并不总是有效。
有更好的方法/解决方案吗?
答案 0 :(得分:0)
尝试使用
animateListItem(view, prevPosition < position);
OR
setLayoutAnimation
在您的适配器的 getView
或 onBindViewHolder 方法中:
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();
}
}