zoukankan      html  css  js  c++  java
  • 表情复制粘贴

    package com.syswin.toon.view;
    
    import android.content.ClipboardManager;
    import android.content.Context;
    import android.text.Editable;
    import android.text.SpannableString;
    import android.util.AttributeSet;
    import android.widget.EditText;
    
    import com.syswin.toon.view.emoji.EmojiUtils;
    
    /**
     * 聊天自定义EditText
     * Created by Administrator on 2015/1/21.
     */
    public class ChatEditText extends EditText{
        public ChatEditText(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
        }
    
        public ChatEditText(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public ChatEditText(Context context) {
            super(context);
        }
    
        @Override
        public boolean onTextContextMenuItem(int id) {
    
            switch (id) {
                case android.R.id.paste:
                    ClipboardManager clip = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
                    int index = getSelectionStart();// 光标所在位置
                    String value = clip.getText().toString();
                    clip.setText("");
                    Editable edit = getEditableText();// 获取EditableText
                    SpannableString spannableString = null;
                    String zhengze = "\[[^\[\]]{1,3}\]"; // 正则表达式,用来判断消息内是否有表情
                    try {
                        spannableString = EmojiUtils.getExpressionString(getContext(),
                                value, zhengze, 0.7f, false);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    if(spannableString == null){
                        edit.insert(index, "表情匹配错误");//把转换后的CharSequence插入到光标所在位置
                    }else{
                        edit.insert(index, spannableString);//把转换后的CharSequence插入到光标所在位置
                    }
    
    
                    //do something
                    break;
    
                default:
                    break;
            }
    
            return super.onTextContextMenuItem(id);
        }
    }

    复写EditText 从而实现EditText中粘贴事件处理,从而将匹配符替换为表情

    重写EditText的
    public boolean onTextContextMenuItem(int id) {
    return super.onTextContextMenuItem(id);
    }
    方法,根据id判断当前操作:
    id:16908319
    全选
    id:16908328
    选择
    id:16908320
    剪贴
    id:16908321
    复制
    id:16908322
    粘贴
    id:16908324
    输入法

  • 相关阅读:
    使用SignalR实现即时通讯功能
    SignalR入门篇
    Mongodb关闭开源许可感想
    RaspberryPi学习教程系列4(串口通信篇)
    RaspberryPi学习教程系列3(编程实验篇-双色LED实验)
    RaspberryPi学习教程系列1(系统安装篇)
    RaspberryPi学习教程系列2(编程前准备篇)
    关于Entity Framework,园里有非常多误人子弟的`
    Java多线程1:使用多线程的几种方式以及对比
    Django编写RESTful API(六):ViewSets和Routers
  • 原文地址:https://www.cnblogs.com/sishuiliuyun/p/4239744.html
Copyright © 2011-2022 走看看