public void startTween(final ImageView v, final boolean clicked){
RotateAnimation rotateAnimation = new RotateAnimation(0, 45,
Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0.5f);
rotateAnimation.setDuration(1000);
rotateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
if (clicked){
Log.e("test","ic_small");
v.setImageResource(R.drawable.ic_close_small);
}else {
Log.e("test","ic_add");
v.setImageResource(R.drawable.ic_add);
}
Log.e("test","onAnimationEnd");
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
rotateAnimation.setFillAfter(true);
v.setAnimation(rotateAnimation);
rotateAnimation.start();
}
这是在 Recyclerview的Item里,v是动画的目标对象,是一个Imageview,现在的问题是`setFillAfter(true);`与结束监听里的`v.setImageResource(R.drawable.ic_add);`会出问题,直接回到第一帧,而不是停留在最后一帧,如果把结束监听里的`v.setImageResource(R.drawable.ic_add);`去掉,那么就会停留在最后一帧,我的目的是让其停留在最后一帧,然后用一个与最后一帧一样的图片代替目前的图片资源.
ps:Item里的动画用tween还是属性动画好?谢谢
뷰의 종료 상태를 유지하려면 애니메이션의 속성이 아닌 뷰의 속성을 변경해야 합니다(애니메이션은 뷰의 속성을 변경하는 데 도움이 되지 않습니다)
rotateAnimation.setFillAfter(true);
rotateAnimation.setFillBefore (false);
사용해보고 작동하는지 확인할 수 있나요