环与延迟周期 [英] Loop with delay period

查看:170
本文介绍了环与延迟周期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个TextView,我想每一秒以高亮显示词的另一封信。

例如:
  ^ h ELLO - ^ h的电子邮件 LLO - 他的罗 - HEL 0 - 地狱 0

我做了什么:

  INT I = 0;
字符串文本;
处理程序处理程序=新的处理程序();公共无效spanText(字符串TXT){
    文本TXT =;
    的for(int i = 0; I< text.length();我++){
        handler.post(可运行);
    }可运行可运行=新的Runnable(){
    @覆盖
    公共无效的run(){
        Spannable spannable = Spannable.Factory.getInstance()newSpannable(文本)。
        StyleSpan风格=新StyleSpan(Typeface.BOLD);
        spannable.setSpan(风格,I,I + 1,Spanned.SPAN_INCLUSIVE_INCLUSIVE);
        bestResult.setText(spannable,BufferType.SPANNABLE);
        我++;
        如果(ⅰ&下; text.length())
            handler.postDelayed(可运行,5000);
    }
};

不幸的是它不工作,我只能看到最后一个字母高亮显示。

感谢您提前。


解决方案

  INT I = 0;
字符串文本;
处理程序处理程序=新的处理程序();公共无效spanText(字符串TXT){
    文本TXT =;
    handler.post(可运行);可运行可运行=新的Runnable(){
    @覆盖
    公共无效的run(){
        Spannable spannable = Spannable.Factory.getInstance()newSpannable(文本)。
        StyleSpan风格=新StyleSpan(Typeface.BOLD);
        spannable.setSpan(风格,I,I + 1,Spanned.SPAN_INCLUSIVE_INCLUSIVE);
        bestResult.setText(spannable,BufferType.SPANNABLE);
        我++;
        如果(ⅰ&下; text.length())
            handler.postDelayed(可运行,5000);
    }
};

I have a TextView and I want each second to highlight another letter in the word.

For example: h e l l o - h e l l o - h e l l o - h e l l o - h e l l o

What I have done:

int i = 0;
String text;
Handler handler = new Handler();

public void spanText(String txt) {
    text = txt;
    for(int i=0; i<text.length(); i++) {
        handler.post(runnable);
    }

Runnable runnable = new Runnable() {
    @Override
    public void run() {
        Spannable spannable = Spannable.Factory.getInstance().newSpannable(text);
        StyleSpan style = new StyleSpan(Typeface.BOLD);
        spannable.setSpan(style, i, i+1, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
        bestResult.setText(spannable, BufferType.SPANNABLE);
        i++;
        if(i < text.length())
            handler.postDelayed(runnable, 5000);
    }
};

Unfortunately it doesn't work and I can see only the last letter highlighted.

Thank you in advance.

解决方案

int i = 0;
String text;
Handler handler = new Handler();

public void spanText(String txt) {
    text = txt;
    handler.post(runnable);

Runnable runnable = new Runnable() {
    @Override
    public void run() {
        Spannable spannable = Spannable.Factory.getInstance().newSpannable(text);
        StyleSpan style = new StyleSpan(Typeface.BOLD);
        spannable.setSpan(style, i, i+1, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
        bestResult.setText(spannable, BufferType.SPANNABLE);
        i++;
        if(i < text.length())
            handler.postDelayed(runnable, 5000);
    }
};

这篇关于环与延迟周期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆