你好我想在屏幕上有一个打字效果,每隔几秒就有一个字母出现在前一个字母之后。我正在考虑使用一个包含我想写的所有文本的字符串,然后每一秒我将获取该字符串的第一个字符,删除它然后将其添加到另一个字符串。例如:
String text = "hello world";
String onscreenText = "";
然后onscreenText中会有“h”,文本中除了“h”之外还有其他内容,依此类推。如何从字符串中删除第一个字符并将其添加到下一个字符串?
答案 0 :(得分:1)
您需要一次打印一个字符,每个字符之间有一个小延迟。要实现这一点,您需要一个循环来打印字符串中的每个字符,每次迭代都有一个小的暂停。 sleep()
命令可用于暂停脚本。
String text = "hello world";
int i;
for(i = 0; i < text.length(); i++){
System.out.printf("%c", text.charAt(i));
try{
Thread.sleep(500);//0.5s pause between characters
}catch(InterruptedException ex){
Thread.currentThread().interrupt();
}
}
更新使用drawString()
方法绘制子字符串:
String text = "hello world";
int i;
for(i = 1; i <= text.length(); i++){
g.drawString(text.subString(0, i), x, y);//Where g is your Graphics object and x and y are the coordinates you want to draw at
try{
Thread.sleep(500);//0.5s pause between characters
}catch(InterruptedException ex){
Thread.currentThread().interrupt();
}
}
答案 1 :(得分:0)
如果你想减少你的字符串你可以调用:text = text.substring(1,text.length)但当然只有当里面有多个字符时才会调用。剩下的线程延迟已经被其他海报解释过了。也许您还可以查看Timer类来安排延迟的任务。
答案 2 :(得分:0)
超级简单易用。不要注意创建的扩展TextView类。让我们为每个人简单易行。看看这个。首先创建一个名为Typewriter的类。然后将此代码复制并粘贴到该类中。关闭班级。
import android.os.Handler;
import android.widget.TextView;
public class Typewriter {
private String sText = new String();
private int index;
private long mDelay = 100;
TextView textView;
public Typewriter(TextView tView) {
textView = tView;
}
public void animateText(String string) {
sText = string;
index = 0;
textView.setText("");
new Handler().removeCallbacks(characterAdder);
new Handler().postDelayed(characterAdder, mDelay);
}
private Runnable characterAdder = new Runnable() {
@Override
public void run() {
textView.setText(sText.subSequence(0, index++));
if (index <= sText.length()) {
new Handler().postDelayed(characterAdder, mDelay);
}
}
};
}
现在,在创建该类之后,要实现此动画功能的新类非常简单。 让我们假设您想要添加一个名为MainActivity的类。
import com.utilities.Typewriter;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
private Typewriter writer;
private TextView tv_textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv_textView = (TextView) findViewById(R.id.tv_textView);
writer = new Typewriter(tv_textView);
writer.animateText("Super Simple Animation");
}
}
多数民众赞成你完成了。 Super Simple让我再次感谢投票。