现在我们实现一个小功能,让屏幕上,某个地方逐个打出一行文字,
先来看一下效果图:
等等,那位大哥讲话了,
额,不好意思,刚才卡了,
方法很多,有的同学想到,用图片实现(这种应该是最Low的),还有一种就是把文字显示出来,上方用东西盖住,每一秒钟取消一个遮盖物,以及自定义一个控件等等,那么我感觉这些方法是不怎么样的,小题大做,复杂化了,其实这个功能翻译过来就是:让TextView每隔一秒显示以一个字符串(并非每一秒多出来一个汉字),那么就简单了,可以开启一个线程,那么线程主要方法如下:
new Thread(
new Runnable() {
@Override
public void run() {
try {
final String stv = s.substring(0, n);//截取要填充的字符串
tv.post(new Runnable() {
@Override
public void run() {
tv.setText(stv);
}
});
Thread.sleep(time);//休息片刻
nn = n + 1;//n+1;多截取一个
if (nn <= length) {//如果还有汉字,那么继续开启线程,相当于递归的感觉
startTv(nn);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
).start();
下面就是要实现循环就可以了,这里的n是个形参,我是把这一坨代码放在一个叫 startTv(int n)这样一个方法里面,这样就 简单的实现功能。全部代码已经奉上,点击查看github全部代码