Android之一分钟完成发表情功能

应用背景

不知道大家是否开发过类似朋友圈,论坛之类的功能。通常在这个过程中我们要有发表情的需求。LZ当时遇到了这个需求,所以完成功能后,就将发表情这个功能封装了一下。使用非常简单,只需要三两行代码,你就能在你的项目中实现发表情的功能啦。

效果图展示


实现步骤

1.将以下类与资源文件依次导入到你自己的项目中

java类


资源文件


asset


2.在某输入页面中的xml中添加布局文件

比如我这个效果图就是一个Activity。那我就在Activity的根部局当中添加如下代码


         <include
            android:id="@+id/chat_face_container"
            layout="@layout/chat_face_container"
            android:visibility="gone" />
这里应该注意xml页面的搭建逻辑,chat_face_container应该在一个LinearLayout的最下面,整个LinearLayout应该是附着在屏幕底部。具体请参考demo

3.在代码中的配置

非常非常的简单,只需要一行代码即可


 //param1:你加入当前页面中的布局,param2:你的输入框,param3:context
 ChatFaceView chatFaceView = new ChatFaceView(chat_face_container, edit_input_text, this);

假如ios发来一条带有表情的消息,如何将字符串消息转换为带有表情的字符串?

调用如下方法即可


SpannableStringBuilder ssbC = FaceUtils.getInstance(context).toSpanText(
                        edit_input_text.getText().toString());
tvshow2.setText(ssbC);

另外还有一些常用api

    /*比如:
          为输入框添加点击事件,点击输入框让chatview消失*/
       edit_input_text.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                chatFaceView.closeChatView();
            }
        });
     /*比如:
             为表情按钮添加点击事件,点击让chatview消失或显示*/
        btn_chat_emoji.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                chatFaceView.openOrCloseChatView();
            }
        });


核心要点

1.发送表情实则是发送的表情对应的String编码,这个编码在本案例中就在asset文件下

2.点击表情后,表情图片如何显示在了EditText中?而不是以原本String格式显示?

这是通该方法实现

    /**
     * 
     * @param png 文件名,不含路径
     * @return
     */
    private SpannableStringBuilder getFace(String png) {
        SpannableStringBuilder sb = new SpannableStringBuilder();

        try {

            //          String tempText = "[" + png + "]";
            String tempText =FaceUtils.getInstance(mContext).GetFaceMap(0).get(png);
            sb.append(tempText);
            sb.setSpan(
                    new ImageSpan(mContext, BitmapFactory
                            .decodeStream(mContext.getAssets().open("face/default/" + png))), sb.length()
                            //                          .decodeStream(mContext.getAssets().open(png))), sb.length()
                            - tempText.length(), sb.length(),
                            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        } catch (Exception e) {
            e.printStackTrace();
        }

        return sb;
    }

[源码下载地址:http://download.csdn.net/detail/qq_23347751/9650522]
[转载请注明出处:http://blog.csdn.net/qq_23347751/article/details/52785938 ]

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值