我想像HandRite一样定制EditText的行为。
所以我尝试了一下EditText在有很多ImageSpan的情况下的编辑性能,但在使用触摸屏和输入法在中间添加或删除字符时,它的速度太慢了。
我怎样才能提高这个性能?
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
发布于 2015-06-09 13:07:55
由于ImageSpan对象的数量非常大,在您的SpannableString中几乎有1000个,这导致它变得很慢。
尝试将HTML teext与ImageGetter一起使用,并检查性能:
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); https://stackoverflow.com/questions/30723238
复制相似问题