七彩霓虹灯效果,基于网上的小Demo进行修改。
在android项目values文件夹下创建文件colors.xml,配置七种颜色:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="blue">#0000ff</color>
<color name="red">#ff0000</color>
<color name="yellow">#ffff00</color>
<color name="green">#8cd400</color>
<color name="pink">#A020F0</color>
<color name="orange">#ffa500</color>
<color name="indigo">#4b0082</color>
</resources>
MainActivity中代码:
// 当前颜色
private int currentCount = 0;
// 颜色ID数组
private int[] colorList = new int[] { R.color.red, R.color.orange,
R.color.yellow, R.color.green, R.color.blue, R.color.indigo,
R.color.pink };
//textview数组
private TextView[] viewList = new TextView[colorList.length];
Handler类 (消息处理器) 帮助主线程进行UI更新
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1) {
//更新textview颜色
for (int i = 0; i < viewList.length; i++) {
viewList[i].setBackgroundResource(colorList[(i + currentCount)% viewList.length]);
}
currentCount++;
}
}
};
onCreate()方法中:
//实例化textview
for (int i = 0; i < colorList.length; i++) {
viewList[i] = new TextView(this);
//设置控件大小位置
RelativeLayout.LayoutParams viewparams = new RelativeLayout.LayoutParams(700 - 100 * i, 700 - 100 * i);
viewparams.addRule(RelativeLayout.CENTER_IN_PARENT);
viewList[i].setLayoutParams(viewparams);
//设置起始颜色
viewList[i].setBackgroundResource(colorList[i]);
layout.addView(viewList[i]);
}
计时器的使用:
//计时器 每200毫秒发送一次消息给主线程更新ui
new Timer().schedule(new TimerTask() {
@Override
public void run() {
mHandler.sendEmptyMessage(1);
}
, 0, 200);
运行demo即可展现七彩霓虹灯。