频道栏目
首页 > 资讯 > 微信公众平台开发 > 正文

微信表情开发

16-07-11        来源:[db:作者]  
收藏   我要投稿

微信表情实现

在我们的聊天应用中,发送表情消息是非常常见的操作,一直好奇要怎么去实现这个功能,于是花时间了解了一下。废话不多说,走起!

 

 

首先我们研究一下这一块UI区域,布局实现比较简单,上面LinearLayout放EditText/ImageView/Button,中间可滑动的ViewPager,下面LinearLayout。

就功能实现也不复杂,将所有切好的表情图片放在资源目录下,使用时引入即可;下面的点可以在ondraw()里面画出来,相对麻烦的一点是点击表情图片,在EditText上面能实现图文混排,下面是实现:

public void onEmotionItemClick(String emoName,int id) {

        Drawable drawable = getResources().getDrawable(id);
        emoName = "["+emoName+"]";
        // 可以实现图文混排的类
        SpannableStringBuilder builder = new SpannableStringBuilder(emoName);
        // 设置图片的大小
        int size = getResources().getDisplayMetrics().densityDpi;
        drawable.setBounds(0, 0, size, size);
        // 包装下图片
        ImageSpan span = new ImageSpan(drawable);
        // 把文字替换成图片
        builder.setSpan(span, 0, emoName.length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

        Editable originalText = mEditText.getText();
        // 获取光标的位置
        int start = mEditText.getSelectionStart();
        if (start < originalText.length()) {

            // 光标不再末尾
            originalText.insert(start, builder);
        }else {

            originalText.append(builder);
        }
    }

    public void onDeleteItemClick() {

        // 删除事件,模拟实体点击的删除键
        dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL));
        dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL));
    }

在发送表情后,消息列表也要显示图文混排的消息,也是通过上面类似的处理方法。

ps:动态表情还在研究,请看后续文章!

相关TAG标签
上一篇:被指业绩不佳 “雷军系”资本市场受挫?
下一篇:微信公众号开发教程[002]-配置
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站