RecyclerViewの行の内部でアニメーションを実行しています(行自体ではなく、テキストを拡大すると想像してください)。それらのアニメーションを持っていない。リサイクラービューで使用するProperty Animatorの値をリセットしようとしています
私は、プロパティのアニメーションを使用しているので、スケールのアクションは、内側のビューのサイズを変更し、漏れが2面で見ることができます。 1)アニメーションが表示がされている(これは私はいくつかの警備員を克服することができ) 2)に移動しますリサイズされ、そのトラックで停止するので、リサイクルされたビューに反映されます。
ビューを元の状態にリセットするにはどうすればよいですか?私はポストから多くのアプローチを試みたが、誰もそれを解決しなかった。ここでHow to reset view to original state after using animators to animates its some properties?
私は(この1つは私は1件の記事で見つかりましたが、うまくいきませんでしたonAnimationEndを使用しようとする試みを持っている)[OnBind]の中で、私のアニメーションを設定する方法のサンプルがある:私が得た最も近いの定義は、この未回答のポストにありました
ObjectAnimator scaleXUp = ObjectAnimator.ofFloat(mView, View.SCALE_X, 10f);
scaleXUp.setRepeatCount(ValueAnimator.INFINITE);
scaleXUp.setRepeatMode(ValueAnimator.REVERSE);
scaleXUp.setDuration(700);
ObjectAnimator scaleYUp = ObjectAnimator.ofFloat(mView, View.SCALE_Y, 10f);
scaleYUp.setRepeatCount(ValueAnimator.INFINITE);
scaleYUp.setRepeatMode(ValueAnimator.REVERSE);
scaleYUp.setDuration(700);
mTotalAnimation = new AnimatorSet();
mTotalAnimation.play(scaleXUp).with(scaleYUp);
mTotalAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
mTotalAnimation.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
animation.removeListener(this);
animation.setDuration(0);
for(Animator va : ((AnimatorSet)animation).getChildAnimations()) {
((ValueAnimator)va).reverse();
}
}
});
mTotalAnimation.start();
そして、ここで私がonUnbindDataに何をすべきかです:
if (mTotalAnimation != null) {
mTotalAnimation.end();
mTotalAnimation = null;
}
そして、私はclearAnimationのアプローチのような多くの人を見たように - しようと、どちらか動作しませんでした。
私は 'end()'は必要ではないと思います。 'reverse()'の効果を元に戻すようです。 また、値を直ちに元の状態にリセットするには、 'anim.reverse()'を呼び出す前に 'anim.setDuration(0)'が必要です。 'mTotalAnimation.setDuration(0)'を呼んでも効果がないことに気づきました。各子アニメーションで呼び出される必要がありました。 – owjsub