表情的发送,展示,粘贴与删除 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

表情的发送,展示,粘贴与删除

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:27


比来我也在做插入神情的功能,网上有很多关于神情的应用的材料,然则大年夜部分材料都是缺胳膊少腿的。参考了网上的一些例子,我做了一个比较完美的demo分享给大年夜家,当然这个demo也存在一些优化问题,有兴趣的人持续优化它。我已经把项目源代码开源在我的github上,https://github.com/arjinmc/FaceDemo
网上很多例子是以数组的情势去存储我们的神情键值对,然则实际项目中并不会用这种模式,因为这种模式扩大性太差。于是我用的是文件的模式去存取,依然是类似的确对应的关系去存取:[神情字符]===图片名称。
做这个功能还有两个重要的控件,必须重写。如不雅不重写的话,须要写大年夜量的代码,分别对TextView和EditText重写。
在TextView中重要重写setText()
@Override
   publicvoidsetText(CharSequence text, BufferType type){
       SpannableString spannableString = new SpannableString(text);
       spannableString = FaceUtil.getExpressionString(getContext(),spannableString.toString());
        super.setText(spannableString, type);
}

这个是用来展示神情的重要代码,同样在EditText中也须要重写这个办法,代码雷同。初次之外还须要重写一个对文本的┞烦贴的动作监听,大年夜而可以做捣⒕貔神情。
 @Override
   publicbooleanonTextContextMenuItem(int id) {
          if (id == android.R.id.paste) {
               ClipboardManagerclipboard= (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
                String value = http://www.sjsjw.com/100/000134MYM007459/clipboard.getText().toString();
                Editable edit = getEditableText();
                int cursorSelect = getSelectionStart();
                edit.insert(cursorSelect, FaceUtil.getExpressionString(getContext(),value));
                return true;
          }
          return super.onTextContextMenuItem(id);
}


还有就是删除神情,在很多大年夜牌应用中,删除神情的按钮平日都邑放在神情堆琅绫擎,这个删除按键还可以充当软键盘的删除键,也就是既可以删除单个字符也可以删除单个神情。我是如许写的。
/**
     * @usage删除editetext上的字符串或者神情
     * @author eminem
     * @email eminem@hicsg.com
     * @website arjinmc.com
     * @create 2014年12月26日
     */
    private void deleOneString(){
       int edittextCursor = edittext.getSelectionStart();
       Editableeditable= edittext.getText(); 
       StringtempString= edittext.getText().toString().substring(0,edittextCursor);
       int end = tempString.lastIndexOf("]");
       if(end==edittextCursor-1){
           int start = tempString.lastIndexOf("[");
           if(start!=-1){
              editable.delete(start, edittextCursor);
           }else if(edittextCursor!=0){
              editable.delete(edittextCursor-1, edittextCursor);
           }
       }else if(edittextCursor!=0){
           editable.delete(edittextCursor-1, edittextCursor);
       }
    }

 
还有一个重点,怎么去断定是拔取了神情照样点击了删除键。我会给删除键定义一个常量用来表示是这个是删除,当点击神情的事宜触发的时刻,我应用了handler去传递这个消息,当界面接收到这个消息的时刻,则对其响应处理。代码在github膳绫擎很完全,有兴趣可以下载来看看。
arjinmc@hotmail.com 这个邮箱还会持续用,随便给我发哪个。迎接骚扰。

相关案例查看更多