【Android】文字列を指定ミリ秒ごとに1文字ずつ出力する

Androidアプリでゲームの会話シーンのようにテキストを1文字ずつ表示したい。

【Step1】
文字列を一文字ずつ出力するハンドラを準備する。
【Step2】
ハンドラを実行する。

public class Activity001 extends Activity {
	
	private TextView textView;
	String put_txt = "文字列を1文字ずつ出力するテスト";
	int i = 0;
	String put_word = "";
	String put_text = "";
	
	private static int TIMEOUT_MESSAGE = 1;
	private static int INTERVAL = 1;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// テキストビュー
		textView = (TextView)findViewById(R.id.textView1);
		// ハンドラ実行
		handler.sendEmptyMessage(TIMEOUT_MESSAGE);
	}
	
	// 文字列を一文字ずつ出力するハンドラ
	private Handler handler = new Handler() {
		@Override
		public void dispatchMessage(Message msg) {
			// 文字列を配列に1文字ずつセット
			char data[] = put_txt.toCharArray();
		    
			// 配列数を取得
			int arr_num = data.length;
			
			if(i < arr_num){
				if (msg.what == TIMEOUT_MESSAGE) {
					put_word = String.valueOf(data[i]);
					put_text = put_text + put_word;
					
					textView.setText(put_text);
					handler.sendEmptyMessageDelayed(TIMEOUT_MESSAGE, INTERVAL * 50);
					i++;
				}else{
					super.dispatchMessage(msg);
				}
			}
		}
	};
}

【出力結果】

1文字ずつ表示

【Android】文字列を指定ミリ秒ごとに1文字ずつ出力する” への1件のコメント

  1. とっても助かりました。ありがとうございました!
    それで、ちょっと作り替えてみました。
    ボタンをレイアウトに設置してみました。
    わたしのウェブサイトに掲載しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>