Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用 "安卓" 或 "安致"。
这篇文章主要为大家详细介绍了 Android 实现文字逐字显示出来效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
可以采用自定义 TextView 的方式去实现,也可才用定时更新文字显示,思路是让 TextView 每隔一秒显示以一个字符串(并非每一秒多出来一个汉字),那么就简单了,可以开启一个线程,那么线程主要方法如下:
- public static void startTv(final int n) {
- 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();
- }
完整代码如下:
1.Activity
- public class TiaoZiActivity extends Activity {
- private TextView textView;
- private String s = "天生我才必有用,千金散盡還福來--李白\n你挑著但,我騎著馬--唐僧\n年后打蓝思科技卡死了减肥的 kjdsfkjsjkdsfj kjdflskjklfjsljdflsjkldfjsljdflsjdfkl";;
- private TiaoZiUtil tiaoziUtil;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_tiaozi);
- textView = ((TextView) findViewById(R.id.tv_text));
- tiaoziUtil = new TiaoZiUtil(textView, s, 100);//调用构造方法,直接开启
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- }
- }
2. 工具类
- public class TiaoZiUtil {
- private static TextView tv;
- private static String s;
- private static int length;
- private static long time;
- static int n = 0;
- private static int nn;
- public TiaoZiUtil(TextView tv, String s, long time) {
- this.tv = tv;//textview
- this.s = s;//字符串
- this.time = time;//间隔时间
- this.length = s.length();
- startTv(n);//开启线程
- }
- public static void startTv(final int n) {
- 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();
- }
- }
3. 布局文件
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
- <TextView
- android:id="@+id/tv_text"
- android:layout_width="match_parent"
- android:layout_height="200dp" />
- <TextView
- android:id="@+id/mytext"
- android:layout_width="match_parent"
- android:layout_height="200dp" />
- </LinearLayout>
来源: http://www.phperz.com/article/17/0827/337635.html