qq聊天界面七:表情的发送接收(用富文本现实)
16lz
2021-01-25
先预览一下效果
源码地址:https://github.com/heinika/SimpleChatUI
先定义一个包含反射的ImageGettter
/** * 用于解析富文本中的表情图片 */mImageGetter = new Html.ImageGetter() {@Overridepublic Drawable getDrawable(String source) { Class clazz = R.mipmap.class;try { Field field = clazz.getDeclaredField(source);int sourceId = field.getInt(field); Drawable drawable = getResources().getDrawable(sourceId); drawable.setBounds(0, 0, 50, 50);return drawable; } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); }return null; }};
将ImageGetter传递到adapter
messageAdapter = new MessageAdapter(messages, inflater, mImageGetter);/** * 点击表情时,将富文本添加到edittext中 */mGridViewFace.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) { Spanned spanned = Html.fromHtml(" + faces.get(position).getName() + "'/>", mImageGetter, null);mEditTextMsg.getText().insert(mEditTextMsg.getSelectionStart(), spanned); }});
将富文本转换为String并传入moudel
messageSend.setMassageContent(filterHtml(Html.toHtml(mEditTextMsg.getText())));messages.add(messageSend);/*用正则表达式过滤掉无关的文本 */public String filterHtml(String str) { str = str.replaceAll("<(?!br|img)[^>]+>", "").trim(); return str;}
在adapter用传入的imagegetter解析:图片
vhRight.mTextViewSend.setText(Html.fromHtml(message.getMassageContent(), mImageGetter, null));
完成任务!!!
更多相关文章
- 为什么要学习 Markdown?究竟有什么用?
- Android(安卓)自定义注解
- 对hint 设置大小及颜色,可用此方法对字符串设置不同颜色或大小
- Android实现自定义view---绘制图片
- androidWebView-Javascript与android交互小框架
- 自定义样式去除标题栏(TItleBar)
- android中Animation的使用!
- java 自定义注解(翻译)
- RadioButton样式自定义