Android图标动画更改颜色

Android图标动画更改颜色,android,Android,我有一个ImageView定义如下: int colorFrom = GetResources().GetColor(R.color.grey_600); int colorTo = GetResources().GetColor(R.color.electric_green); ... 其中,ic_check_simpledrawable是一个带有颜色#757575的材质图标。我假设在用户按下ImageView所在的ViewGroup后,图标的颜色变为#00ff00 我试图通过以下代码实

我有一个
ImageView
定义如下:

int colorFrom = GetResources().GetColor(R.color.grey_600);
int colorTo = GetResources().GetColor(R.color.electric_green);
...

其中,
ic_check_simple
drawable是一个带有颜色
#757575
的材质图标。我假设在用户按下
ImageView
所在的
ViewGroup
后,图标的颜色变为
#00ff00

我试图通过以下代码实现这一点:

int colorFrom=R.color.grey_600;
int colorTo=R.color.electric_绿色;
ValueAnimator colorAnimation=ValueAnimator.ofObject(新的argbeEvaluator(),colorFrom,colorTo);
colorAnimation.setDuration(250);//毫秒
colorAnimation.addUpdateListener(新值animator.AnimatorUpdateListener(){
@凌驾
动画更新上的公共无效(值animator animator){
mActivitySelectorIcon.setColorFilter((int)animator.getAnimatedValue(),PorterDuff.Mode.DST_IN);
}
});
colorAnimation.start();
我相信我已经尝试了所有的PorterDuff模式,但没有成功


我希望这在运行棒棒糖和预棒棒糖(minSDK 16)的设备上运行。

问题是您正在设置资源ID的动画,而不是实际的颜色。所以你必须这样做:

int colorFrom = GetResources().GetColor(R.color.grey_600);
int colorTo = GetResources().GetColor(R.color.electric_green);
...

谢谢这就解决了。为了达到我的目标,我必须这样做,并在顶部切换到
PorterDuff.Mode.SRC_
。中的
PorterDuff.Mode.SRC_对我更有效。可能是因为其中一种颜色是半透明的