Java打字机效果

时间:2016-02-27 17:55:15

标签: java

你好我想在屏幕上有一个打字效果,每隔几秒就有一个字母出现在前一个字母之后。我正在考虑使用一个包含我想写的所有文本的字符串,然后每一秒我将获取该字符串的第一个字符,删除它然后将其添加到另一个字符串。例如:

  String text = "hello world";
  String onscreenText = "";

然后onscreenText中会有“h”,文本中除了“h”之外还有其他内容,依此类推。如何从字符串中删除第一个字符并将其添加到下一个字符串?

3 个答案:

答案 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让我再次感谢投票。