为什么我的图像不会通过onTick()方法每1秒更改一次?

时间:2015-03-18 16:38:58

标签: android countdowntimer

问题:图片会发生变化,但不会在适当的时间内发生变化。

此时CountDownTimer类引用:

  

CountDownTimer

     

安排倒计时,直到将来的某个时间,并在整个过程中定期发出通知。

     

公共建设者

     

CountDownTimer(long millisInFuture, long countDownInterval)

     

millisInFuture 从调用start()到倒计时完成并且调用onFinish()之后的未来毫秒数

     

countDownInterval 接收onTick(长)回调的路径

     

来源:http://developer.android.com/reference/android/os/CountDownTimer.html

假设我有以下两张图片:

  • enter image description here
  • enter image description here

我希望每隔1秒换一次,

我在这里做错了什么?有人能指点我吗?

    blinkingAlarm = new CountDownTimer(1000,1000) {

    boolean switchImage = false;

    @Override
    public void onTick(long millisUntilFinished) {


        if(!switchImage)
        {
            button1.setBackgroundResource(R.drawable.image1);
        }
        else if(switchImage)
        {
            button1.setBackgroundResource(R.drawable.image2);           
        }

        // Flip
        switchImage = (!switchImage);

    }


    @Override
    public void onFinish() {    

        // Loop
        blinkingAlarm.start();
    }
};

该方法由

调用
    @Override
    public void onClick(View v) {

        switch(v.getId())
        {

        case R.id.button1:  
            blinkingAlarm.start();
        break;

        }

}

1 个答案:

答案 0 :(得分:0)

只需使用handler和postDelayed而不是CountDownTimer。 在您的课程中添加以下变量:

private boolean switchImage = false;
private Handler handler;

然后使用此代码:

handler = new Handler();

Runnable changeImage = new Runnable() {
        @Override
        public void run() {
            if(!switchImage){
                button1.setBackgroundResource(R.drawable.image1);
                switchImage = true;
            } else {
                button1.setBackgroundResource(R.drawable.image2);
                switchImage = false;
            }
            handler.postDelayed(this, 1000);
        }
    };

    handler.postDelayed(changeImage, 1000);