テキストボックスを使用したほとんどのRPGや冒険のように、TextViewのテキストを単語ごと、または文字ごとに表示したいと考えています。テキストフローがどのように表示されるかの良い例は、ゲームのフェニックス ライト ( http://youtu.be/2OOX2Gv0768?t=1m7s )です。
私が今まで試したことはこれです:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String text = "test test test test";
String[] split = text.split(" ");
Deque<String> words = new LinkedList<String>();
for (int i = 0; i<split.length; i++)
{
words.addLast(split[i]);
}
showNextWord(words);
}
public void showNextWord(final Deque<String> words)
{
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
public void run()
{
TextView t = (TextView) findViewById(R.id.textBox);
t.append(words.pollFirst()+" ");
if (words.size()>0)
showNextWord(words);
}
}, 500);
}
エミュレーターでテストしましたが、各文字を表示した後に遅延を開始すると、パフォーマンスが低下するようです。遅延は一貫していません。
それに加えて、よりエレガントな解決策があることを願っています。たぶん、遅延にもっと柔軟になる方法はありますか?たとえば、文の後の大きな遅れなど。
どうもありがとうございました!