无名 发表于 2022-5-8 15:29:56

【HR】android开发之表情包功能


最近开发论坛练手时遇到了一个问题,怎么在EditText插入图片?CSDN上搜了下,终于解决了

1.利用Html

EditText view = findViewById(控件id);
      view.setText(Html.fromHtml("<img src=\"图片链接\"/>"));

这种方法坏处太多,就不多赘述了[狂汗]

2.利用SpannableString类

EditText view = findViewById(控件id);
      int index = view.getSelectionStart();//记录光标位置
      Editable edit = view.getEditableText();//获取edittext内容
      SpannableString ss = new SpannableString("");//将替换为图片
      Drawable d = getResources().getDrawable(图片id);
      d.setBounds(0, 0, 50, 50);//设置图片大小
      ImageSpan span = new ImageSpan(d,ImageSpan.ALIGN_BOTTOM);
      ss.setSpan(span, 0, ss.length(),
      if (index < 0 || index >= edit.length()) {
            edit.append(ss);//如果光标在内容后面就直接添加
      } else {
            edit.insert(index, ss);//反之则在光标位置插入
      }

这种方法用法很广,非常方便[滑稽]

3.开发表情功能

(1).插入表情(√)
(2).正则匹配表情符号并替换为图片显示在textview上(×)

正则的用法就去www.baidu.com上搜吧,这里不多讲[真棒]

Pattern pattern = Pattern.compile("\\+)]");//匹配,记得加转义符号\\
      Matcher match = pattern.matcher(需要匹配的内容);
      SpannableString ss = new SpannableString(需要匹配的内容);
      while (match.find()) {//一直匹配
            int number = Integer.parseInt(match.group(1)) - 1;//获取第一个括号里的数字,并转为int类型,为等下取数组图片做铺垫
            Drawable d = getResources().getDrawable(tp);/*tp是一个int数组,数组里存的是图片id,例如
             private int[] tp = {
             R.drawable.face1,R.drawable.face2,R.drawable.face3,
             R.drawable.face4,R.drawable.face5,R.drawable.face6,
             R.drawable.face7,R.drawable.face8,R.drawable.face9,
             R.drawable.face10
             };
            */
                d.setBounds(0, 0, 50, 50);
                ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BOTTOM);
                ss.setSpan(span, match.start(), match.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
               // match.start()匹配字符串下标(开始)
               // match.end()匹配字符串下标(结束)
            }
            view.setText(ss);//设置text

OK表情功能开发完成
注:非原创,搬砖
http://cdn.u1.huluxia.com/g4/M02/CD/AB/rBAAdmFn7HmAQElfAAA5vtoCYHE751.jpghttp://cdn.u1.huluxia.com/g4/M02/CD/AB/rBAAdmFn7HqAWEnaAAB7N58Al-c820.jpghttp://cdn.u1.huluxia.com/g4/M02/CD/AB/rBAAdmFn7HqAM7uIAALyO_h1nkc839.jpghttp://cdn.u1.huluxia.com/g4/M02/CD/AB/rBAAdmFn7HuAMGNkAALvLY7q4Vk345.jpg
页: [1]
查看完整版本: 【HR】android开发之表情包功能