2012-03-29 33 views
1

在我的android應用程序中,我試圖展示一個「Loading ...」文本,它將每隔100 ms更改一次。每100毫秒後它會增加一個點。所以首先它會像「加載」。並且在接下來的100毫秒內將會是「正在加載」。當它將是「正在加載...」時,該過程將終止並再次從單詞開始。它將持續到3500毫秒。這將非常像進度條。如何在android中製作文字動畫?

我希望我能夠解釋這個問題。

如何解決此問題?請幫忙。

回答

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 2012-03-29 15:45:12

+0

糟糕!抱歉。錯字。我的意思是i = i + 100;改變。 – Rajkiran 2012-03-29 15:47:49

+0

我修改了一點點..但它的工作.. – 2012-03-30 05:19:05

1

您應該使用AsyncTask。這個類意在做長時間運行的後臺任務,它們會自動發佈更新並在UI線程上運行。

doInBackground,有你的循環,然後將調用publishProgress這將調用onProgressUpdate每100ms與新值。

這將在後臺完成,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.."); 
     } 
    } 
}