我想为ViewGroup的背景Drawable的alpha属性设置动画。
我使用view.getBackground()获得了对background的drawable的引用。
然后我使用以下代码(from this thread):
if (backgroundDrawable.getAlpha() == 0) {
ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(backgroundDrawable, PropertyValuesHolder.ofInt("alpha", 255));
animator.setTarget(backgroundDrawable);
animator.setDuration(2000);
animator.start();
} else {
ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(backgroundDrawable, PropertyValuesHolder.ofInt("alpha", 0));
animator.setTarget(backgroundDrawable);
animator.setDuration(2000);
animator.start();
}
但是动画总是从alpha值0开始。(意思是,当我想要动画为0时,它会立即消失,因为它会从0动画到0)。
有谁知道如何才能使这项工作?
答案 0 :(得分:3)
我相信您想要的是为您的动画设置初始值和最终值,而不仅仅是最终值,如下所示:
if (backgroundDrawable.getAlpha() == 0) {
ObjectAnimator animator = ObjectAnimator
.ofPropertyValuesHolder(backgroundDrawable,
PropertyValuesHolder.ofInt("alpha", 0, 255));
animator.setTarget(backgroundDrawable);
animator.setDuration(2000);
animator.start();
} else {
ObjectAnimator animator = ObjectAnimator
.ofPropertyValuesHolder(backgroundDrawable,
PropertyValuesHolder.ofInt("alpha", 255, 0));
animator.setTarget(backgroundDrawable);
animator.setDuration(2000);
animator.start();
}
或者,从使用drawable.getAlpha()
的当前值开始,但该方法仅在API 19 = /