任何人都知道任何有效的动画执行方法,必须做的是显示一个文本,一个字符一个字符?比如:
T 这是 这个 这 这个我 这是 ..。
诸若此类。
谢谢!
发布于 2011-07-14 22:29:32
这可能不是最优雅的解决方案,但最简单的解决方案可能是TextView的一个快速子类,它有一个Handler,它每隔一段时间更新文本一次,直到显示完整的序列:
public class Typewriter extends TextView {
private CharSequence mText;
private int mIndex;
private long mDelay = 500; //Default 500ms delay
public Typewriter(Context context) {
super(context);
}
public Typewriter(Context context, AttributeSet attrs) {
super(context, attrs);
}
private Handler mHandler = new Handler();
private Runnable characterAdder = new Runnable() {
@Override
public void run() {
setText(mText.subSequence(0, mIndex++));
if(mIndex <= mText.length()) {
mHandler.postDelayed(characterAdder, mDelay);
}
}
};
public void animateText(CharSequence text) {
mText = text;
mIndex = 0;
setText("");
mHandler.removeCallbacks(characterAdder);
mHandler.postDelayed(characterAdder, mDelay);
}
public void setCharacterDelay(long millis) {
mDelay = millis;
}
}然后,您可以在这样的活动中使用它:
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Typewriter writer = new Typewriter(this);
setContentView(writer);
//Add a character every 150ms
writer.setCharacterDelay(150);
writer.animateText("Sample String");
}
}如果您希望在每个字母中添加一些动画效果,也许可以使用子类TextSwitcher来代替。
希望这能帮上忙!
发布于 2014-06-28 23:18:45
使用Devunwired的打字机类
然后,在布局中:
<com.example.fmm.Typewriter
android:id="@+id/typewriter"
android:layout_alignParentTop="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>活动中的代码:
Typewriter writer = (Typewriter)findViewById(R.id.typewriter);
//Add a character every 150ms
writer.setCharacterDelay(150);
writer.animateText("Sample String");发布于 2013-04-15 18:15:09
不需要设置额外的类使用这个,这里的电视是一个文本视图在您的布局只是调用
setCharacterDelay(150);
animateText(“示例字符串”);
private Handler mHandler = new Handler();
private Runnable characterAdder = new Runnable() {
@Override
public void run() {
tv.setText(mText.subSequence(0, mIndex++));
if(mIndex <= mText.length()) {
mHandler.postDelayed(characterAdder, mDelay);
}
}
};
public void animateText(CharSequence text) {
mText = text;
mIndex = 0;
tv.setText("");
mHandler.removeCallbacks(characterAdder);
mHandler.postDelayed(characterAdder, mDelay);
}
public void setCharacterDelay(long millis) {
mDelay = millis;
}https://stackoverflow.com/questions/6700374
复制相似问题