gpt4 book ai didi

Android Spannabe 表情符号在 GridView 和 TextView 中加载缓慢

转载 作者:太空狗 更新时间:2023-10-29 15:03:55 24 4
gpt4 key购买 nike

我正在我的 Android 应用程序中进行一些聊天,我正在使用带有 SpannableString 的 EditText 和 TextView 中显示的表情符号(表情符号)。

为此,我创建了一个类(代码如下)。我还制作了一个加载所有表情符号的 gridview。问题是所有工作都很慢(因为我有 500 个表情符号)加载和显示表情符号需要很多时间。下面是我正在使用的代码。

我正在寻找一种更好的算法来用表情符号替换字符串或以其他方式更快地加载表情符号。

public class EmoticonHandler {

private static final Map<String, Integer> emoticons = new HashMap<String, Integer>();

private static void addPattern(Map<String, Integer> map, String smile,
int resource) {
map.put(smile, resource);
}

// Add the items to the HasMap
static {

// Smileys
addPattern(emoticons, "#ce001#", R.drawable._ce001_);
addPattern(emoticons, "#ce002#", R.drawable._ce002_);
addPattern(emoticons, "#ce003#", R.drawable._ce003_);
addPattern(emoticons, "#ce004#", R.drawable._ce004_);
// Here comes the other 500 emojis

}

// Get image for each text smiles
public static void getSmiledText(Context context, Spannable span, int size) {

int index;
for (index = 0; index < span.length(); index++) {
for (Entry<String, Integer> entry : emoticons.entrySet()) {
int length = entry.getKey().length();
if (index + length > span.length())
continue;
if (span.subSequence(index, index + length).toString()
.equals(entry.getKey())) {

span.setSpan(new EmoticonSpan(context, entry.getValue(),
size), index, index + length,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

index += length - 1;
break;
}
}
}

}}

这是 EmoticonSpan 的代码

public class EmoticonSpan extends DynamicDrawableSpan {

private Context context;
private int resourceID;
private int size;
private Drawable drawable;

public EmoticonSpan(Context context, int resourceID, int size) {
super();

this.context = context;
this.resourceID = resourceID;
this.size = size;

}

@Override
public Drawable getDrawable() {

if (drawable == null) {
try {
drawable = context.getResources().getDrawable(resourceID);
drawable.setBounds(0, 0, size, size);
} catch (Exception e) {
// Swallow
}
}
return drawable;
}
}

最佳答案

您可以使用 android guide recommendation 来流畅地显示 GridView 图像,并脱离您的主线程。 http://developer.android.com/training/displaying-bitmaps/display-bitmap.html#gridview

关于Android Spannabe 表情符号在 GridView 和 TextView 中加载缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23725189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com