如何在Android上反复更改背景颜色?

时间:2012-01-07 21:49:20

标签: android background-color

我有倒计时器,onFinished我想让屏幕反复改变颜色。

我正在尝试:

public void onFinish() {
findViewById(R.id.screenid).setTag("BLACK");
_timer2=new Timer();
_timer2.scheduleAtFixedRate(Flashscreen, 0,1700);}



TimerTask Flashscreen = new TimerTask()
{
    public void run() {

        if ( findViewById(R.id.screenid).getTag()=="BLACK" )
        {
            findViewById(R.id.screenid).setBackgroundColor(Color.BLUE);
            findViewById(R.id.screenid).setTag("BLUE");
            return;
        }
        if (findViewById(R.id.screenid).getTag()=="BLUE")
        {
            findViewById(R.id.screenid).setBackgroundColor(Color.BLACK);
            findViewById(R.id.screenid).setTag("BLACK");
            return;

        }
                }};

但它只会将颜色改为蓝色一次。发生什么事了?

2 个答案:

答案 0 :(得分:2)

是检查对象是否相等而不是字符串内容相等?

尝试更改

( findViewById(R.id.screenid).getTag()=="BLACK" )

(((String)findViewById(R.id.screenid).getTag()).equals("BLACK"))

同样检查“BLUE”

基本上,'=='检查引用是否相同,就像它们都指向同一个对象一样。 'equals'实际上会检查字符串的内容是否相等。

答案 1 :(得分:1)

你可以尝试将两种颜色的变化都放在ui线程上运行。 像下面的东西

runOnUiThread(new Runnable() {
    @Override  
    public void run() {
        findViewById(R.id.imageView1).setBackgroundColor(Color.BLACK);
        findViewById(R.id.imageView1).setTag("BLACK");
    }
});