我有这个代码:
public void setText(String s){ TextView tv= (TextView)HomeActivity.tf.getView().findViewById(R.id.textViewFragment); char c; for(int i=0; i< s.length(); i++){ c= s.charAt(i); tv.append(String.valueOf(c)); try{ Thread.sleep(100); }catch(Exception e){} } }
问题是我不能让TextView逐个显示字母.循环完成并执行所有操作后,即文本显示时.
我想让它逐个字母显示,以给TextView一个动画效果.
这段代码有效,
public void setText(final String s) { TextView tv= (TextView)HomeActivity.tf.getView().findViewById(R.id.textViewFragment); final int[] i = new int[1]; i[0] = 0; final int length = s.length(); final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); char c= s.charAt(i[0]); Log.d("Strange",""+c); tv.append(String.valueOf(c)); i[0]++; } }; final Timer timer = new Timer(); TimerTask taskEverySplitSecond = new TimerTask() { @Override public void run() { handler.sendEmptyMessage(0); if (i[0] == length - 1) { timer.cancel(); } } }; timer.schedule(taskEverySplitSecond, 1, 500); }