有谁知道,为什么这段代码不起作用以及如何修复它?我正在尝试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();
}
答案 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");
}