我认为问题出在您传递给该setBackgroundColor
方法的值上。
从课程的文档中Color
我们可以看到:
组件存储如下 (alpha << 24) | (红色 << 16) | (绿色 << 8) | 蓝色的。
在您的代码中,您传递的第一个值(假设TimeCounter
从 0 开始)123455
对应0x0001E23F
于十六进制。
通过分解它,我们有:
alpha=0x00
red=0x01
green=0xE2
blue=0x3F
它为您提供 0% 的 alpha 值,这意味着颜色是透明的。
你100000
每秒都在增加这个值。因此,您需要大约 166 秒(几乎 3 分钟)才能获得 alpha 值大于 0 的颜色(但它仍然是不可见的,因为 alpha 的百分比将低于 1%)。
要修复它,您可以使用每种颜色的偏移量将 alpha 值设置为 100%。为此,您只需添加0xff000000 (4 278 190 080)
颜色值。
最后,只要确保颜色值始终低于最大值0xffffffff (4 294 967 295)
并且它应该可以工作。
这是一个示例代码:
private int offsetColor = 0xFF000000; //offset to have 100% in alpha value
public void run() {
runOnUiThread(new Runnable() {
public void run() {
tvTimer.setText("timer=" + String.valueOf(TimeCounter));
TimeCounter++;
if (TimeCounter < 167) {
A.setBackgroundColor(offsetColor+TimeCounter*100000);
} else {
/* You just reach the limit: 0xFFFFFFFF which is White */
}
}
});
}
}, 0, 1000);
使用此示例,您可以进行 166 次迭代(166 秒)。您可以更改每秒添加的值以调整动画的持续时间。