首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当EditText中有许多ImageSpan时,它太慢了

当EditText中有许多ImageSpan时,它太慢了
EN

Stack Overflow用户
提问于 2015-06-09 12:50:18
回答 1查看 1K关注 0票数 1

我想像HandRite一样定制EditText的行为。

所以我尝试了一下EditText在有很多ImageSpan的情况下的编辑性能,但在使用触摸屏和输入法在中间添加或删除字符时,它的速度太慢了。

我怎样才能提高这个性能?

代码语言:javascript
复制
StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 1000; i++) {
        sb.append(' ');
    }

    SpannableString ss = new SpannableString(sb.toString());

    Random random = new Random();

    for (int i = 0; i < 1000; i++) {
        Drawable d = new ColorDrawable(random.nextInt());
        d.setBounds(0, 0, mEditText.getLineHeight(), mEditText.getLineHeight());
        ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
        ss.setSpan(span, i, i+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    }

    mEditText.setText(ss);

HandRite's behavior

EN

回答 1

Stack Overflow用户

发布于 2015-06-09 13:07:55

由于ImageSpan对象的数量非常大,在您的SpannableString中几乎有1000个,这导致它变得很慢。

尝试将HTML teext与ImageGetter一起使用,并检查性能:

代码语言:javascript
复制
ImageGetter imageGetter = new ImageGetter() {
            public Drawable getDrawable(String source) {    
                StringTokenizer st = new StringTokenizer(index, ".");
                Drawable d = new BitmapDrawable(getResources(),emoticons[Integer.parseInt(st.nextToken()) - 1]);
                d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
                return d;
            }
        };

        Spanned cs = Html.fromHtml("<img src ='"+ index +"'/>", imageGetter, null);  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30723238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档