开发者

Android: Timer/Delay Alternative

I want to make an image be visibile for 60 ms and then be invisible, then I want another image to do the same.. and so on. I don't thin开发者_StackOverflow中文版k I'm using the Timer right.. because when I run the app both images turn on at the same time and don't disappear when I press the button that uses this function.

Here's some sample code..

timer.schedule(new TimerTask()
        {
            @Override
            public void run()
            {
                LED_1.setVisibility(View.VISIBLE);
                                    // LED_1 is an ImageView
            }
        }, 60);
        LED_1.setVisibility(View.INVISIBLE);

timer2.schedule(new TimerTask()
        {
            @Override
            public void run()
            {
                LED_2.setVisibility(View.VISIBLE);
                                    // LED_2 is an ImageView
            }
        }, 60);
        LED_2.setVisibility(View.INVISIBLE);

Is there another alternative? I've tried examples like.. Android app How to delay your Service start on phone boot

and

http://www.roseindia.net/java/beginners/DelayExample.shtml

But it's not doing what I want..

Anything I'm doing wrong? Or is there an alternative way that I can do this?

Thanks.

-Faul

For Good.Dima..

            int delayRate = 60;
        final Runnable LED_1_On = new Runnable()
    {
        public void run()
        {
            LED_1.setVisibility(View.VISIBLE);
                    handler.postDelayed(this, delayRate);

        }
    };

    handler.postDelayed(LED_1_On, delayRate);

    final Runnable LED_2_On  = new Runnable()
    {
        public void run()
        {
            LED_1.setVisibility(View.INVISIBLE);
            LED_2.setVisibility(View.VISIBLE);
                    handler3.postDelayed(this, delayRate);

        }
    };

    handler.postDelayed(LED_2_On, delayRate);


You can try to use Handler, it posts smth into UI thread, it can post with a delay postDelayed


The problem is that both timers have a 60 ms delay and in the run method of both you set them to be visible. You need to change one of the run methods to set it to invisible.


You are creating two events which both fire 60 ms from now.

You instead could set the first event to fire in 60ms and the second in 120ms, or have the first event trigger a submission of the second event 60ms from when the first runs.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜