2012-02-14 7 views
0

私はメインビューにビューを追加中に遅延を追加しようとしていますが、同時にウィンドウを表示しています。助けてください。遅延を伴うビューを追加する

final Handler handler = new Handler(); 
    LinearLayout ll = (LinearLayout)findViewById(R.id.ll); 
    final HorizontalScrollView hsv = new HorizontalScrollView(TestViewActivity.this); 
    final LinearLayout lhsv = new LinearLayout(TestViewActivity.this); 

    final Animation a1 = new AlphaAnimation(0.00f, 1.00f); 
    a1.setDuration(350); 
    a1.setFillAfter(true); 
    for(int k =0; k < 5; k++){ 
     new Handler().postDelayed(new Runnable() { 
       public void run() { 
        //write your code here... 
        TextView tv = new TextView(TestViewActivity.this); 
        tv.setText("Text"); 
        tv.setTextSize(42); 
        tv.setPadding(10, 0, 10, 0); 
        tv.setVisibility(View.INVISIBLE); 
        tv.clearAnimation(); 
        tv.startAnimation(a1); 
        lhsv.addView(tv, temp); 
        temp++; 
       } 
      }, 2000); 
     } 

    hsv.addView(lhsv); 
    ll.addView(hsv); 

tempはstatic intです。

答えて

2

あなたのコードによれば、2秒後にすべてのビューを同時に追加することができます。 遅延時間は以下のようにint kで変更する必要があります。

for(int k =0; k < 5; k++){ 
    handler.postDelayed(new Runnable() { 
      public void run() { 
       //write your code here... 
       TextView tv = new TextView(TestViewActivity.this); 
       tv.setText("Text"); 
       tv.setTextSize(42); 
       tv.setPadding(10, 0, 10, 0); 
       tv.setVisibility(View.INVISIBLE); 
       tv.clearAnimation(); 
       tv.startAnimation(a1); 
       lhsv.addView(tv, temp); 
       temp++; 
      } 
     }, 2000 + 2000 * k); 
    } 

私は、必要のないハンドラを作成しないことをお勧めします。 1つのハンドラにrunnablesをポストするだけです。

+0

ありがとうございます....しかし、フリッキングの問題があり、2番目に、1つのハンドラに実行後のサンプルを提供することができます。 – Programmer

+0

最終的なハンドラハンドラ=新しいハンドラ();このコードに従って、あなたはすでにハンドラを構築しています。このハンドラにrunnableをポストするだけです。このように、handler.postDelayed(new Runnable(){...} – lulumeya

+0

plzはフリッカーの問題についてガイドできますか?たとえば、以前のtextviewも消えて、なぜ戻ってくるのですか?( – Programmer