循环不起作用,为什么会这样?

时间:2012-05-08 10:45:56

标签: java android

我无法理解这个java代码。我希望图像闪烁几次,有些延迟。图像闪烁一次,就是这样。有人能给我一个解释会很棒!

private void RunAnimations(int[]melodiTakten) { 

    for (int i = 0; i < 4; i++) {  

        ImageView markeringspilen = (ImageView) findViewById(R.id.markeringspil);
        markeringspilen.setVisibility(View.VISIBLE);
        markeringspilen.postDelayed(new Runnable() {
            public void run() {
                ImageView markeringspilen = (ImageView) findViewById(R.id.markeringspil);

                markeringspilen.setVisibility(View.INVISIBLE);
            }
        }, 2000);

    } 

3 个答案:

答案 0 :(得分:1)

如果我理解你的想法是正确的,那么你的实施是错误的,因为它设置了所有同时发生的延迟行动。你可以像这样将它们分开:

for (int i = 0; i < 4; i++) {
    markeringspilen.postDelayed(new Runnable() {
        public void run() {
            ImageView markeringspilen = (ImageView) findViewById(R.id.markeringspil);
            markeringspilen.setVisibility(View.VISIBLE);
        }
    }, 4000*i);
    markeringspilen.postDelayed(new Runnable() {
        public void run() {
            ImageView markeringspilen = (ImageView) findViewById(R.id.markeringspil);
            markeringspilen.setVisibility(View.INVISIBLE);
        }
    }, 4000*i+2000);
}

此循环设置八个延迟的可见性更改 - 在4000*i处可见一组四对可见组,然后在4000*i+2000处设置为不可见。

答案 1 :(得分:0)

执行循环,但执行得非常快,你看不到它。你应该在循环中加入一些延迟,而不仅仅是在runnable中。

答案 2 :(得分:0)

这是因为您连续四次拨打setVisibility(View.VISIBLE),然后在延迟2秒后拨打setVisibility(View.INVISIBLE)四次。

您需要做的是添加八个可用延迟的runnable,从而切换可见性。