安卓图标动画改变颜色



我有一个定义如下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);
...

最新更新