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

このループは、8 つの遅延可視性の変更を設定します。4 組の set visible at の4000*i後に set invisible at が続き4000*i+2000ます。

于 2012-05-08T10:51:21.700 に答える
0

ループは実行されますが、非常に高速に実行され、それを見ることはできません。ランナブルだけでなく、ループにも遅延を入れる必要があります。

于 2012-05-08T10:50:03.197 に答える
0

これsetVisibility(View.VISIBLE) は、連続して 4 回呼び出し、2 秒後に 4 回呼び出すためですsetVisibility(View.INVISIBLE)

あなたがする必要があるのは、8 つのランナブルを追加し、遅延を増やして可視性を切り替えることです。

于 2012-05-08T10:50:58.670 に答える