您的位置:首页 > 移动开发 > Android开发

Android实现文字逐字显示出来效果

2017-07-10 16:51 381 查看
效果图如下:



可以采用自定义TextView的方式去实现,也可才用定时更新文字显示,思路是让TextView每隔一秒显示以一个字符串(并非每一秒多出来一个汉字),那么就简单了,可以开启一个线程,实现代码如下:

1.布局文件

<?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" />

</LinearLayout>

2.Activity(需要逐字显示的字)

package com.zking.xx;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class TiaoZiActivity extends Activity {

private TextView textView;

private String s = "主人,我正在努力的往外面跳字呢,\n你别急,反正急也没用。\n卡哇伊.....";
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();
}
}

3. Activity(工具类)

package com.zking.xx;

import android.widget.TextView;

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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息