android实现emoji输入

学android也有一段时间, 一直都是自己摸索, 各种上网查资料, 也明白了不能一味去索取有时间也要分享一些自己的心得 。

最近几天都在写关于android emoji输入的小例子,网上有不少源码还有实现思路,我自己也看了一个emojicon的开源项目, 分析了下实现原理,搞了几个小时也没弄懂,  emojicon的表情符号都经过一定的编码,关键是自己水平有限, 对编码那一块很少涉及。

首先要实现emoji先要弄清楚一些相关的类与继承关系。

CharacterStyle :     

    实现类都可以设置字符的风格。

Spannable  :

    该接口间接的实现了CharSequence, 在android中TextView 的setText方法是接收的CharSequence这点要定要记住.

简单的实现方法:

   利用emoji文件的名子按自己设计的规则生成一个emoji的文本表示。将emoji文本设置到TextView或EditText,  这里的TextView都是要自己去继承后面重写一些方法,将emoji文本设置到TextView中间要对TextView的字符进行查找,找出里面的emoji文本.再通过Spannable来替换成图片。

定义类:   

  Emoji:

     实体类。

  AbsEmojiFactor    

    emoji抽象工厂, 加载emoji文件。

  

  EmojiManager

    搜索emoji文本,对AbsEmojiFactor产生的emoji进行集中管理 。

其他的都是些ui布局,适配器什么的,不是核心部分就不写出来呢, 上张图后上代码 。

UI过的去就行 哈哈.

项目编码是utf-8乱码请修改编码 , 下载完后用压缩软件解压就行呢。

百度网盘下载: http://pan.baidu.com/s/1jGzHi8Q

    

  

android实现emoji输入

时间: 2024-08-08 22:07:59

android实现emoji输入的相关文章

Unity Android设备的输入

Unity Android设备的输入 1依据屏幕位置输入 有的时候也许是为了整个有些风格的干净,减少屏幕上的UI图标,以至于摒弃了虚拟按键这种常用的输入方式.为了替代虚拟按键的输入方式而选择了依据点击事件发生在屏幕中的位置而控制对象的移动等.比如将整个手机屏幕划分为左右两个区域,左边区域负责移动控制,右边区域负责技能释放. 这里我们需要处理的问题分别是点击事件的获取及屏幕信息的获取,下面这两个方面的API文档. 点击事件:http://wiki.ceeger.com/script/unityen

android的edittext输入长度

http://blog.csdn.net/uyu2yiyi/article/details/6329738 http://flysnow.iteye.com/blog/828415/ http://songfantasy.iteye.com/blog/1172362 android的edittext输入长度,布布扣,bubuko.com

Android之获取输入用户名与密码发送短信

打算不超过三天的时间我就要准备出发了,所以把之前的资料来个总结. 这都是在课堂上做过的作业. 好了,废话少说,直接上代码. 步骤: 1.设置单击事件2.获取输入的QQ号码与密码3.判断输入获取的内容是否为空,为空就给用户提示Toast提示,不为空就继续4.使用短信管理器,是一个单例的类SmsManager.getDefault()来获取5.发送QQ号码与密码 布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/re

Android 聊天表情输入、表情翻页带效果、下拉刷新聊天记录

经过一个星期的折腾,终于做完了这个Android 聊天表情输入.表情翻页带效果.下拉刷新聊天记录.这只是一个单独聊天表情的输入,以及聊天的效果实现.因为我没有写服务器,所以没有双方聊天的效果.主要是聊天中表情的选择,发送.表情翻页带有不同的效果.我在主要代码中都写了注释.下面看代码实现.附上本文源码,代码较多. 下载地址:点击 一.先看实现的效果图 二.调用接口以及设置MainActivity package com.example.activity; import java.util.Arra

android EditText 限制输入大小写,大写转小写

在写登录验证的时候,需要将用户输入的大写字符转化为小写.看了下API,只有InputFilter.AllCaps是将EditText 的小写英文字符转化为大写.好吧.依赖AllCaps在写个类似的InputFilter吧.基本上Copy AllCaps的代码,只改了两行.大家看代码吧 import android.text.InputFilter; import android.text.SpannableString; import android.text.Spanned; import a

Android游戏之输入类设计(传感器,键盘,触摸点)

Android游戏之输入类设计(传感器,键盘,触摸点) 1.基础知识: A. SensorEventListener传感器事件监听 http://developer.android.com/reference/android/hardware/SensorEventListener.html Class Overview--------------------------------------------------------------------------------Used for

unity inputfield 过滤emoji输入

unity版本:unity2017.1.5f1 复现步骤:InputField在安卓手机InputField连续输入两个emoji会报错 报错内容: 2020-01-08 19:56:38.366 22894-22931/? E/Unity: ArgumentOutOfRangeException: Argument is out of range. Parameter name: index at System.Collections.Generic.List`1[UnityEngine.UI

[修正] Firemonkey Android Edit 可输入 Emoji (颜文字)

问题:在 Android 平台下,TEdit 输入 Emoji 文字,无法显示彩色(皆为黑色),即使将 Edit.ControlType = Platform 设为平台原生控件,还是没用(真机测试 Style 与 Platform 是一样的,而 iOS 平台则不同). 修正方法: 请将源码 FMX.TextLayout.GPU.pas 复制到自己的工程目录里,再进行修改. procedure TTextLayoutNG.DoDrawLayout(const ACanvas: TCanvas);

Android中TextView输入字数统计和限制

在Android开发应用的时候,文本编辑框中最多输入140个字,经常会显示还剩多少字以限制用户输入的字数, EditText content;//定义一个文本输入框 TextView hasnum;// 用来显示剩余字数 int num = 140;//限制的最大字数 content = (EditText) findViewById(R.id.et_content); hasnumTV = (TextView) findViewById(R.id.tv_num); hasnumTV.setTe