【问题标题】:Android Java: .setText() every x msAndroid Java:.setText() 每 x 毫秒
【发布时间】:2013-05-21 12:43:26
【问题描述】:

我想做以下事情: 我给我的应用程序中的一个全局函数一个字符串,这个函数打开一个看起来像对话气泡的 FrameLayout。这包括一个用于字符串的 TextView。 到目前为止效果很好 - 但我希望它看起来像一个“现场演讲”。所以文本不应该只是出现,而是 x 毫秒后的每个字符。喜欢:
H

赫尔
地狱
(等等)

你对此有什么想法吗? 谢谢!

【问题讨论】:

  • 将字符串拆分为字符,在几秒钟后附加每个字符..

标签: java android delay settext


【解决方案1】:

我编写了一个扩展 AsyncTask 的类,作为一个快速示例来说明如何做到这一点:

public class TyperTask extends AsyncTask<Void, String, Void> {
    TextView mTextView;
    String mMessage;
    int mTypingDelay;

    TyperTask(TextView textView, String message, int typingDelay) {
        this.mTextView = textView;
        this.mMessage = message;
        this.mTypingDelay = typingDelay;
    }

    @Override
    protected Void doInBackground(Void... params) {
        for (int i = 0; i < mMessage.length(); i++) {
            publishProgress(String.valueOf(mMessage.charAt(i)));
            try {
                Thread.sleep(mTypingDelay);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(String... typedChar) {
        mTextView.append(typedChar[0]);
    }

}

使用方法如下:

TextView myTextView = (TextView) findViewById(R.id.myTextView);
new TyperTask(myTextView, "This is a test message.", 100).execute();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 2010-10-12
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多