调用invalidate()时,计时器无法在Android中运行

时间:2016-04-18 21:35:28

标签: android timer ondraw flashing android-view-invalidate

我想通过绘制颜色为灰色,白色(与背景匹配),然后再次变灰的路径来创建闪烁效果。我要闪3次,显示灰色1秒,白色1秒灰色,持续1秒等等。

当我为Handler创建postDelayed()时,程序跳过run()并且没有在时间集中执行它,并且没有发生闪烁:

final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                invalidate(); //calls onDraw()
                Log.d(TAG, "Flashing now now");
            }
        }, 1000);

如何使用计时器实现这种闪烁功能并将其闪烁3次?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情,

int delay = 5000; // delay for 5 sec.

int period = 1000; // repeat every sec.

Timer timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {

public void run() {

System.out.println("done}

}, delay, period);

否则您还有很多其他示例可以关注,例如Example 1Example 2Example 3等。如果您仍需要帮助,请与我们联系。

答案 1 :(得分:0)

这是一个工作代码示例,说明我们如何将地球仪从蓝色闪烁到红色再返回。您可以修改内部的代码,以限制您想要的次数和时间延迟。

i