Android Recyclerview的Item里的动画 fillAfter(true) 失效问题
PHP中文网
PHP中文网 2017-04-17 17:35:41
0
1
662
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还是属性动画好?谢谢
PHP中文网
PHP中文网

认证0级讲师

répondre à tous(1)
黄舟

要保持view结束的状态,必须改view的属性,而不是改变动画的属性(动画并不会帮助你改变View的属性)
rotateAnimation.setFillAfter(true);
rotateAnimation.setFillBefore(false);
你试一试有没有用

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal