android 色调动画不起作用
android tint animation doesn't work
我有自定义 ImageView
,它应该在使用 setColorFilter
:
从纯色背景色加载到图像后对其内容进行动画处理
private void _animate() {
int bgColor= ContextCompat.getColor(getContext(), R.color.iconPlaceholderBg);
int transparent=ContextCompat.getColor(getContext(),android.R.color.transparent);
ValueAnimator bgAnim= ValueAnimator.ofObject(new ArgbEvaluator(),bgColor,transparent);
bgAnim.setDuration(5000);
//bgAnim.setInterpolator(new DecelerateInterpolator());
bgAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
//Log.d("anim",animation.getAnimatedFraction()+"")
//Image.this.clearColorFilter();
Image.this.setColorFilter((int)animation.getAnimatedValue());
}
});
bgAnim.start();
}
动画本身按扩展运行(5 秒长)。但是内容会立即出现在最终位置(没有颜色转换)。我尝试了不同的 PorterDuff.Mode
模式,但看起来像 none他们做事正确。
是否有任何变通方法可以达到预期效果?
问题出在我的背景颜色上 tranparency.For 由于某些原因 setColorFilter
使用 trasparent 时效果不尽如人意 colors.I 已通过以下解决方法获得所需的行为:
Image.this.getDrawable().setAlpha((int) (animation.getAnimatedFraction()*255));
我有自定义 ImageView
,它应该在使用 setColorFilter
:
private void _animate() {
int bgColor= ContextCompat.getColor(getContext(), R.color.iconPlaceholderBg);
int transparent=ContextCompat.getColor(getContext(),android.R.color.transparent);
ValueAnimator bgAnim= ValueAnimator.ofObject(new ArgbEvaluator(),bgColor,transparent);
bgAnim.setDuration(5000);
//bgAnim.setInterpolator(new DecelerateInterpolator());
bgAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
//Log.d("anim",animation.getAnimatedFraction()+"")
//Image.this.clearColorFilter();
Image.this.setColorFilter((int)animation.getAnimatedValue());
}
});
bgAnim.start();
}
动画本身按扩展运行(5 秒长)。但是内容会立即出现在最终位置(没有颜色转换)。我尝试了不同的 PorterDuff.Mode
模式,但看起来像 none他们做事正确。
是否有任何变通方法可以达到预期效果?
问题出在我的背景颜色上 tranparency.For 由于某些原因 setColorFilter
使用 trasparent 时效果不尽如人意 colors.I 已通过以下解决方法获得所需的行为:
Image.this.getDrawable().setAlpha((int) (animation.getAnimatedFraction()*255));