利用利用Android中的中的TextView实现逐字显示动画实现逐字显示动画
在安卓程序启动的时候,想逐字显示一段话,每个字都有一个从透明到不透明的渐变动画。那如何显示这个效
果,下面一起来看看。
前言前言
Android的TextView只能设置整个TextView的动画,而不能设置每个文字的动画。即使是使用TextSwitcher,也很难实现我想
要的效果。
所以选择自定义一个。大体思路是:继承继承ViewGroup,设置,设置Text的时候,每个文字为一个的时候,每个文字为一个TextView,每隔一个固定时间,启,每隔一个固定时间,启
动每个动每个TextView的动画。的动画。
定义一个CTextView,继承ViewGroup:
实现主要代码:
public class CTextView extends ViewGroup {
}
向外提供一个方法setText(String text, final Animation animation, int duration) ,text为要显示的字符串,animation为每个字符的动
画,duration为字符动画的播放间隔。
该方法实现如下:
public void setText(String text, final Animation animation, int duration) {
int time = 0;
if(text != null && !text.isEmpty()) {
char[] characters = text.toCharArray();
for(char c : characters) {
final TextView t = new TextView(context);
//遍历传入的字符串的每个字符,生成一个TextView,并设置它的动画
t.setText(String.valueOf(c));
t.setTextSize(28);
Handler h = new Handler();
//每隔duration时间,播放下一个TextView的动画
h.postDelayed(new Runnable() {
@Override
public void run() {
addView(t);
t.setAnimation(animation);
}
}, time);
time += duration;
}
}
}
CTextView完整实现如下:
import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.widget.TextView;
/**
* Created by cchen on 2014/9/2.
*/
public class CTextView extends ViewGroup {
private Context context;
public CTextView(Context context) {
super(context);
this.context = context;
}
public CTextView(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
}
评论0