Optimized getSmileyText to decrease message display time

This commit is contained in:
Sylvain Berfini 2013-08-20 13:58:52 +02:00
parent 3ff74418e9
commit 97983fab60

View file

@ -114,7 +114,8 @@ public class BubbleChat {
Spanned text = null; Spanned text = null;
if (message != null) { if (message != null) {
if (context.getResources().getBoolean(R.bool.emoticons_in_messages)) { if (context.getResources().getBoolean(R.bool.emoticons_in_messages)) {
text = getSmiledText(context, getTextWithHttpLinks(message)); text = getSmiledText(context, getTextWithHttpLinks(message), message);
//text = getTextWithHttpLinks(message);
} else { } else {
text = getTextWithHttpLinks(message); text = getTextWithHttpLinks(message);
} }
@ -245,23 +246,19 @@ public class BubbleChat {
cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR)); cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR));
} }
public static Spannable getSmiledText(Context context, Spanned text) { public static Spannable getSmiledText(Context context, Spanned spanned, String text) {
SpannableStringBuilder builder = new SpannableStringBuilder(text); SpannableStringBuilder builder = new SpannableStringBuilder(spanned);
int index;
for (index = 0; index < builder.length(); index++) { for (Entry<String, Integer> entry : emoticons.entrySet()) {
for (Entry<String, Integer> entry : emoticons.entrySet()) { String key = entry.getKey();
int length = entry.getKey().length(); int indexOf = text.indexOf(key);
if (index + length > builder.length()) while (indexOf >= 0) {
continue; int end = indexOf + key.length();
if (builder.subSequence(index, index + length).toString().equals(entry.getKey())) { builder.setSpan(new ImageSpan(context, entry.getValue()), indexOf, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.setSpan(new ImageSpan(context, entry.getValue()), index, index + length, indexOf = text.indexOf(key, end);
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); }
index += length - 1;
break;
}
}
} }
return builder; return builder;
} }