TextView中的Android Animate BackgroundColor

时间:2017-09-17 19:46:20

标签: java android animation

有谁知道,为什么这段代码不起作用以及如何修复它?我正在尝试TextView的动画背景色。 IDE不显示错误。

private void animationButton(final TextView textView) {

    int firstColor = Color.parseColor("FFFFFFFF");
    int secondColor = Color.parseColor("FF00FF00");

    ValueAnimator animation = new ValueAnimator();
    animation.setIntValues(firstColor, secondColor);
    animation.setEvaluator(new ArgbEvaluator());

    animation.setDuration(300);

    animation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            textView.setBackgroundColor((int) animation.getAnimatedValue());
        }
    });

    animation.start();
}

1 个答案:

答案 0 :(得分:1)

  

IDE不会显示错误

然后我假设您在animationButton块中围绕try-catch并且未记录任何内容,因为Color.parseColor需要#来解析十六进制颜色码。您应该使用您发布的代码获得IllegalArgumentException

来自文档

  

解析颜色字符串,并返回相应的color-int。如果   无法解析字符串,抛出IllegalArgumentException异常。   支持的格式为:

     

#RRGGBB

     

#AARRGGBB

否则您需要传递以下值之一:

  

红色,蓝色,绿色,黑色,白色,灰色,青色,品红色,黄色,   lightgray,darkgray,grey,lightgrey,darkgrey,aqua,紫红色,石灰,   栗色,海军蓝,橄榄色,紫色,银色和蓝绿色。

<强>来源

@ColorInt
public static int parseColor(@Size(min=1) String colorString) {
    if (colorString.charAt(0) == '#') {
        // Use a long to avoid rollovers on #ffXXXXXX
        long color = Long.parseLong(colorString.substring(1), 16);
        if (colorString.length() == 7) {
            // Set the alpha value
            color |= 0x00000000ff000000;
        } else if (colorString.length() != 9) {
            throw new IllegalArgumentException("Unknown color");
        }
        return (int)color;
    } else {
        Integer color = sColorNameMap.get(colorString.toLowerCase(Locale.ROOT));
        if (color != null) {
            return color;
        }
    }
    throw new IllegalArgumentException("Unknown color");
}