2012-03-29 11 views
1

私のアンドロイドアプリケーションでは、100ミリ秒ごとに変わる "Loading ..."テキストを表示しようとしています。 100ミリ秒ごとに1ドット増えます。最初は「読み込み中」のようになります。 100ミリ秒後には「Loading ...」になります。「Loading ...」になると、このプロセスは終了し、再び最初のワードから開始します。それは3500ミリ秒まで続きます。それはプログレスバーのようなものです。アンドロイドでテキストをアニメーション化する方法は?

私はこの問題を説明できることを願っています。

この問題を解決するにはどうすればよいですか?助けてください。

答えて

4

最高の答えではありませんが、機能します。

Handler handler = new Handler(); 

    for (int i = 100; i <= 3500; i=i+100) { 
     handler.postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       if(i%300 == 0){ 
        textView.setText("Loading."); 
       }else if(i%200 == 0){ 
        textView.setText("Loading.."); 
       }else if(i%100 == 0){ 
        textView.setText("Loading..."); 
       } 
      } 
     }, i); 
    } 
+0

これは無限ループです( 'I = 1 + 100'):) – MByD

+0

おっと!ごめんなさい。打ち間違え。私はi = i + 100を意味しました。かわった。 – Rajkiran

+0

私はちょっと修正しましたが、働いています。 –

1

非同期タスクを使用する必要があります。このクラスは、アップデートを公開し、UIスレッドで自動的に実行される長期実行のバックグラウンドタスクを実行するためのものです。

doInBackgroundには、新しい値でonProgressUpdateを呼び出すpublishProgressが呼び出されます。

これはバックグラウンドで実行され、onProgressUpdateは自動的にUIスレッド上で実行されます。

の行に何か:

private class ShowLoading extends AsyncTask<Void, Integer, Void> { 

    @Override 
    protected Void doInBackground(Void... params) { 
     for (int i = 0; i < 3500; i++){ 
      publishProgress(i); 
      try { 
       Thread.sleep(100); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

     return null; 
    } 


    @Override 
    protected void onProgressUpdate(Integer... values) { 
     // TODO Auto-generated method stub 
     super.onProgressUpdate(values); 

     if (values[0]%3 == 0){ 
      textview.setText ("Loading."); 
     } else if (values[0]%3 == 1){ 
      textview.setText ("Loading.."); 
     } else if (values[0]%3 == 2){ 
      textview.setText ("Loading.."); 
     } 
    } 
} 
関連する問題