2013-05-21 98 views
2

我想要做以下事情: 我給我的應用程序中的全局函數提供一個字符串,此函數打開一個看起來像對話泡泡的FrameLayout。這一個包括一個字符串的TextView。 迄今爲止工作得很好 - 但我希望它看起來像一個「現場演講」。所以文本不應該只出現在x毫秒後的每個字符中。像:
^ h

赫爾
地獄
(等)Android Java:.setText()每x毫秒

你有任何想法? 謝謝!

+2

分割字符串成字符,追加每char在一些秒.. – sanbhat

回答

2

我寫延伸AsyncTask作爲你如何能做到這一個簡單的例子類:

public class TyperTask extends AsyncTask<Void, String, Void> { 
    TextView mTextView; 
    String mMessage; 
    int mTypingDelay; 

    TyperTask(TextView textView, String message, int typingDelay) { 
     this.mTextView = textView; 
     this.mMessage = message; 
     this.mTypingDelay = typingDelay; 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     for (int i = 0; i < mMessage.length(); i++) { 
      publishProgress(String.valueOf(mMessage.charAt(i))); 
      try { 
       Thread.sleep(mTypingDelay); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
     return null; 
    } 

    @Override 
    protected void onProgressUpdate(String... typedChar) { 
     mTextView.append(typedChar[0]); 
    } 

} 

下面是如何使用它:

TextView myTextView = (TextView) findViewById(R.id.myTextView); 
new TyperTask(myTextView, "This is a test message.", 100).execute(); 
+0

哇,謝謝!按原樣工作。 –