我有一个定义如下ImageView
:
<ImageView
android:id="@+id/iv_check_simple"
android:background="@drawable/ic_check_simple"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
其中ic_check_simple
可绘制对象是具有颜色#757575
的材质图标之一。我假装图标的颜色,在用户按下ImageView
所在的ViewGroup
后,更改为#00ff00
。
我正在尝试使用以下代码实现此目的:
int colorFrom = R.color.grey_600;
int colorTo = R.color.electric_green;
ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo);
colorAnimation.setDuration(250); // milliseconds
colorAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animator) {
mActivitySelectorIcon.setColorFilter((int) animator.getAnimatedValue(), PorterDuff.Mode.DST_IN);
}
});
colorAnimation.start();
我相信我已经尝试了所有的波特达夫模式,但没有成功。
我希望这在运行棒棒糖和棒棒糖之前的设备中工作(minSDK 16)
问题是您正在对资源 ID 进行动画处理,而不是实际颜色。 所以你必须做这样的事情:
int colorFrom = GetResources().GetColor(R.color.grey_600);
int colorTo = GetResources().GetColor(R.color.electric_green);
...