在 TextView 中延迟打印字符串

Print with delay a string in a TextView

我试图在我的 AndroidApp 的 TextView 中打印一个字符串,每个字符之间有一些延迟。字符串是 pi,我想模拟应用程序实时计算它的事实。我试图通过睡眠功能添加一些延迟,以免太快地用太多请求淹没 TextView,但无济于事,因为它仍然不起作用:(

字符串是: 字符串 pi_value = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117";

public void printWithDelays(String data, TimeUnit unit, long delay)
            throws InterruptedException {
        String pi_temp = "";
        TextView pi_text_holder = findViewById(R.id.pi_text_holder);
        pi_text_holder.setText(pi_temp);
        for (char ch : data.toCharArray()) {
            pi_temp.concat(String.valueOf(ch));
            pi_text_holder.setText(pi_temp);
            unit.sleep(delay);
        }
    }

如果您有想法,我将不胜感激。

您可以使用 kotlin 流或 Rxjava 并使用去抖动运算符。 您可以将字符串转换为字符列表并使用 Observables。 fromArray(list_of_characters) 然后应用去抖运算符。 例如

Observables. fromArray(list_of_characters).debounce(500, TimeUnit.MILLISECONDS).subscribe({
  textView.text = it
},{
})

public void printWithDelays(String data, TimeUnit unit, long delay)throws InterruptedException {

字符串pi_temp = "";

TextView pi_text_holder = findViewById(R.id.pi_text_holder);

for (char ch : data.toCharArray()) {

        new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        pi_temp.concat(String.valueOf(ch));
                        pi_text_holder.setText(pi_temp);
                    }
                },delay);
    }

}

这是一个很好的解决方案。效果不错。

https://ssaurel.medium.com/create-a-type-writer-effect-on-android-4dc8f2ccada6