1

我无法理解这个 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);

    } 
4

3 回答 3

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);
}

此循环设置了八个延迟可见性更改 - 一组四对 set visible at4000*i后跟 set invisible at 4000*i+2000

于 2012-05-08T10:51:21.700 回答
0

循环已执行,但执行得非常快,您看不到它。您应该在循环中放置一些延迟,而不仅仅是在可运行文件中。

于 2012-05-08T10:50:03.197 回答
0

那是因为您setVisibility(View.VISIBLE) 连续调用四次,然后在 2 秒延迟后调用四次setVisibility(View.INVISIBLE)

您需要做的是添加八个具有不断增加的延迟的可运行文件,从而切换可见性。

于 2012-05-08T10:50:58.670 回答