oppo r2017 的oppo键盘表情很少有没有表情

列表网公众号列表活动随时有扫我活动不错过
亲们,您看清楚了,我们这是工厂生产,一手货源,厂家直销的哦,价格优惠。如下图:
订单全部现做,产品出厂会
微信扫一扫快速获取电话
︱智系列-简约超薄耐用皮套︱适用机型:oppor2017 可订制LOGO 品牌代工 产品特性 ●采用进口PU+PC材料及专业技术
微信扫一扫快速获取电话
深圳市大望奇异软胶制品有限公司专业生产定做羊皮 牛皮手机壳价格低是我们的优势欢迎来电咨询合作
iphone5s手机壳真皮套
微信扫一扫快速获取电话
艾梵特 全国领先的手机配件制造商
微信扫一扫快速获取电话
本厂专业生产、批发各品牌各主流型号手机贴膜,手机皮套、手机壳业务, 欢迎各大手机通讯业务相关批发商,经销商咨询恰谈!
微信扫一扫快速获取电话
产品介绍产品信息名称:OPPO 2017金属边框-+背板风格:超薄 简约 商务 时尚特点:--顶级工艺 航天铝材 商务风尚
微信扫一扫快速获取电话
品质保证:正规工厂生产的货物品质比较有保2、
专业优势:将近十年的专业生产;国内外潮流和动向的及时掌控;3、
微信扫一扫快速获取电话
东莞市尚品皮具制品有限公司成立于2005年广东o东莞。是专业生产手机保护套、平板电脑保护套、iPad保护套、电子书保护套、智能保
微信扫一扫快速获取电话
东莞市尚品皮具制品有限公司成立于2005年广东o东莞。是专业生产手机皮套、平板电脑皮套、iPad皮套、电子书皮套、智能皮套、眼罩
微信扫一扫快速获取电话
深圳市天策激光科技有限公司是深圳市工商管理局认定的高新技术产业,拥有一批多年从事激光加工设备,非标自动化设备
微信扫一扫快速获取电话
目前主要以淘宝、天猫、速卖通、阿里国际站、亚马逊、ebay、线下实体等客户为主。我们主营产品:手机壳定制 欢迎各界朋友前来免费打
微信扫一扫快速获取电话
深圳市华盛旺通讯科技有限公司是一家塑胶制品、通讯产品、电子产品的技术研发与销售;手机外壳的技术研发与销售;国内贸易,货物及技术进
微信扫一扫快速获取电话
目前主要以淘宝、天猫、速卖通、阿里国际站、亚马逊、ebay、线下实体等客户为主。我们主营产品:手机壳定制 欢迎各界朋友前来免费打
微信扫一扫快速获取电话
深圳市迈科迅有限公司是一家企业研发、设计、生产、销售和服务于一体的大型数码产品高新技术企业,同时也是国内最早进入数码音响领域的专
微信扫一扫快速获取电话
iPhone7 三防中性 产品细节图产品包装图购买须知1、关于质量
我们所制造的产品都是原装1:1品质,包括材料和细节均
微信扫一扫快速获取电话
现在的市场不认可墨守成规,没有创新的创业就是一潭没有希望的死水,既不能给消费者带来满足,也不能给创业者带来利益。如果你是
微信扫一扫快速获取电话
产品图片联系人: 明月(雷小姐)
厂家原创设计、采用真
微信扫一扫快速获取电话
iphone4/4S 手机壳产品知识产品名称:手机壳产品材料:PC透明壳适用机型:ipho
微信扫一扫快速获取电话
iphone4/4s超薄边框iphone4/4s保护壳系列iphone5保护壳系列三星i9300保护壳iphone5保护膜系列i
微信扫一扫快速获取电话
IPHONE 5手机壳产品知识产品名称:手机壳产品材料:PC适用机型:IPHONE5产品
微信扫一扫快速获取电话
亲!本店所有包邮商品只发全一 优速快递,如快递不到的请亲另补邮费发其他快递,另部分偏远地方(青海,甘肃,新疆,宁夏,西藏)如
微信扫一扫快速获取电话
声明:本产品价格不含包运费,运费需按地方而定。详情咨询我们工作人员,感恩亲友们支持、谢谢!适用机型:Iphone5产品展示彩图
微信扫一扫快速获取电话
微信扫一扫快速获取电话
产品图片厂家原创设计、采用真机开模、量身定做、全网独具工艺、为你带来无与伦比的完美体验精锐设计师倾情打造,每个图案都精美绝伦确保
微信扫一扫快速获取电话
适用于小米3有新款图案上架哦,亲们抓紧时间哦高工艺彩绘,玻璃镜面质感非市面上普通彩绘工艺。采用进口高端PC材质+进口彩绘设备油
微信扫一扫快速获取电话
翻盖iphone手机套手机壳 手机外壳 硅胶套(质量做工都一流,贴合度佳,无杂色,图案印制精美。】iphone4/iphone5
微信扫一扫快速获取电话
名称:小米2手机壳材质:PC料颜色:白色、黑色、配置:手机壳、热转印金属板、双面胶包装:塑料袋包装特点:耐摔,抗划伤
微信扫一扫快速获取电话
iphone5/5S手机壳产品知识产品名称:手机壳产品材料:硅胶+金属适用机型:ipho
微信扫一扫快速获取电话
-------------------热卖系列链接-------------------超薄手机壳系列iphone手机壳系列皮套
微信扫一扫快速获取电话
本产品采用优质材料,耐磨擦,不易脏,手感好,皮肤易适应,时尚美观,产品厚实,能完美保护您的爱机。产品特性●采用优质材料加工制造,
微信扫一扫快速获取电话
一体成型手机壳折边、不油边的布艺、皮革手机壳避免传统油边手机壳油边开裂、脱落问题 我们提供个性、完善的手机壳生产、加工、定制服务
微信扫一扫快速获取电话
【买家必读】 凡购买本公司任何商品,有任何问题请及时与我们联系,我们会第一时间给你解决问题,并给你一个满意的答复 1. 收货7天
微信扫一扫快速获取电话
现市面上有很多仿此款的手机壳,本店郑重承诺绝对正品由于图案较多和新款的不断推出,没有一一拍照,推荐亲们混配哦,俺们一定会挑最热销
微信扫一扫快速获取电话
联系人:李凤辉 先生(业务员)诚信通:QQ:邮箱:移动电话:185
微信扫一扫快速获取电话
温馨提示: 此款无包装,我们有简易的pp袋子包装保护好的哦! 需要包装亲们需要联系客服另外拍包装盒 谢谢!!!! (1 这个是需
微信扫一扫快速获取电话
【产品编号】J)【产品说明】iphone7 plus镜面手机壳 TPU保护套iphone7 指环支架手机保
微信扫一扫快速获取电话
【适用机型】: 小米4【产品材质】:高档环保TPU,光滑通透,无毛刺.【产品特性】:全包边,防摔,超薄,浮雕,透明,不宜发黄,软
0752 - 3071050
微信扫一扫快速获取电话
适用于新款iphone7手机壳 苹果7简约创意壳电镀PU皮手机保护套新款适用于苹果手机壳苹果iphone7壳创意手机壳苹果
微信扫一扫快速获取电话
新款Tribute2点钻三合一手机壳批发LS665超级防摔满天星保护套产品介绍名
称:三合一镶钻满天星品
微信扫一扫快速获取电话
2014年10月最新苹果iPhone手机套适合于:iphone6
~清新色彩可爱萌惹人爱~~优质TP
微信扫一扫快速获取电话
oppor2017手机壳相关厂家:
oppor2017手机壳周边分类:
&2017 列表网&琼ICP备号-12&增值电信业务经营许可证B2-&OPPO R2017电话-OPPO智能手机官网
拨号界面& & & & & & & & & &&进入通话的拨号盘界面,首先显示拨号盘及通话记录。在界面上向下滑动可以收起拨号盘,直接查看通话记录。在拨号盘上可以直接输入号码,或者联系人拼音等方式查找联系人进行拨打。切换到通话记录页面后,上方弹出全标签页可供切换。点击通话记录可以直接拨打电话。后面的箭头可以查看该号码的全部通话记录详情。点击头像可以调出联系人简易查看界面,陌生号码则会提示存储号码。通话界面& & & & & & & & & &&如图所示,界面上部显示联系人姓名,号码及类别,通话时长。底部有4个按钮,从左到右的功能分别是:打开/关闭免提,静音,展开/收起键盘,展开更多选项。点击更多,可以看到录音,电话本,添加通话,笔记等几个功能。轻触挂断可以结束通话。多方通话& & & & & & & & & &&点触拨号,拨通第一通电话后。点触更多中的添加通话,进入拨号界面。输入另一方电话或者从通话记录、电话本中选择要拨打的联系人点触拨号,拨出另一方电话。接通后,点触上方 ,可以在多通电话之间进行切换,点触&合并通话&,可连接两方通话。注意:必须是运营商支持的SIM卡才可以进行以上操作。最多支持6人会议通话。通话设置& & & & & & & & & &&通过拨号盘的“更多”菜单,找到并进入通话设置。智能拨号点触智能拨号,弹出智能拨号对话框,然后根据自己需要进行选择。OPPO支持智能拼音拨号、智能首笔拨号。一键拨号设置后可快速拨号,长按拨号盘某个数字键可以快速拨号给指定的联系人。注意:数字“1”键已经分配给语音信箱,不可设置。拨号动画设置拨号动画的呈现形式。拨号音设定设置拨号盘按键反馈的音色效果。接通提示点触接通提示,弹出接通提示选择对话框,根据自己需要进行选择:无提示、仅提示音、仅振动、提示音及振动。默认为仅振动。通话显示设置通话界面显示元素的优先级。快速回复点触快速回复短信 ,可以设置常用的回复短语。OPPO手机内置了4条常用回复短语。自动重拨滑动自动重拨开关,打开/关闭自动重拨。 自动重拨功能在以下情况时会启用:对方关机;对方忙线;对方无应答;对方挂断(拒接)。 自动重拨最大次数为10次。陌生号码响一声来电静音打开此功能后,可避免只响一声的骚扰来电造成打扰。通讯统计可以查看手机通话时间、短信条数的统计信息。 点触计时器归零及计数器归零按钮可将统计信息归零。注意:此功能将清除手机上的所有统计数据,请慎用!语音信箱1.点触“服务”,选择语音信箱运营商。2.点触“号码”,可以设置语音信箱号码。固定拨号点触固定拨号,进入固定拨号菜单。1.点触启用固定拨号,输入正确的PIN2码后可启用固定拨号功能。2.点触更改PIN2,可以更改PIN2。3.点触固定拨号列表,进入固定拨号列表;点触菜单键可添加固定拨号联系人。来电转接点触来电转接,进入来电转接设置菜单。1.始终转接:设置转接电话号码,开启时手机无条件转接所有电话。2.占线时转接:设置转接电话号码,开启时手机占线时转接电话。3.无人接听时转接:设置转接电话号码,开启时手机无人接听时转接电话。4.无法接通时转接:设置转接电话号码,开启时手机无法接通时转接电话。呼叫限制点触呼叫限制,进入呼叫限制设置界面。1.禁拨所有电话:开启时,禁止拨出所有电话。2.禁拨国际电话:开启时,禁止拨出国际电话。3.禁拨本国外的国际电话:开启时,禁拨本国外的国际电话。4.拒接所有来电:开启时,拒接所有的来电。5.漫游时拒接来电:开启时,在漫游的情况下,拒接来电。6.取消所有限制:取消所设置的所有限制功能。7.更改呼叫限制密码。其他设置点触其他设置,进入其他设置界面。来电等待:滑动来电等待开关,开启后在通话期间,将通知您有其他来电;关闭后在通话期间,将不通知您有其他来电。拨打紧急号码1.未锁屏时点触电话,打开拨号盘 ;2.点触数字键输入紧急号码 ;&3.点触拨号键即可拨打紧急号码;&4.若设置了手机密码或SIM卡PIN码可在输入界面直接点触紧急拨号来拨打紧急电话。注意:1.不同的国家有不同的紧急呼叫号码,所以您手机中的紧急呼叫号码不会在所有地区都生效。有时由于网络、环境或干扰事件的影响,紧急电话有可能无法拨打。2.拨打紧急电话时,手机的电话功能必须开启。3.本手机可以使用GPS信号帮助紧急服务找到您的位置。r2017 oppo虚拟键盘在哪里_百度知道
r2017 oppo虚拟键盘在哪里
我有更好的答案
您可以进入OPPO企业平台向客服咨询提问喔?可以详细描述一下吗?谢谢若您还有其他的问题咨询你好亲,请问你指的是什么界面的虚拟键盘呢
主营:智能终端和移动互联网
为您推荐:
其他类似问题
您可能关注的内容
虚拟键盘的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。后使用快捷导航没有帐号?
其他登录方式
—— 新手入门 ——
—— 智友精华 ——
查看: 18462|回复: 376
在线时间382 小时最后登录阅读权限30UID注册时间积分1009精华0
, 积分 1009, 距离下一级还需 191 积分
主题帖子 金币1199 元 智豆1 点
&&&ROM简介& && && && && && && && &
ROM大小:556MB
Android版本:4.3
UI类型:ColorOS
适合机型:OPPO R2017
下载地址:
游客,查看隐藏内容请或一键去隐藏
1.基于官方包深度优化安全稳定定制。
2.增加了完整的ROOT权限
3.精简官方内置的第三方冗余应用。
4.默认开启USB调试模式,搞机更方便
&&&ROM优势& && && && && && && && &
源于官方:基于最新官方底包制作。
深度精简:无预装APK,自带APK数量从原厂包精简44%;
rom包比原厂减少29%;
稳定流畅:经专业测试,与各种软件完美兼容,长时间稳定运行,安全流畅。通过独有
技术,大幅提升系统运行效率
&&&刷机注意& && && && && && && && &
1、刷机之前请确认手机已经Root、务必备份手机,备份手机中的资料和数据。
2、请务必保证电池电量在60%以上并保证刷机过程中电脑不会断电。
3、刷机有风险,请仔细阅读相关的刷机教程并自行承担刷机风险,本人及论坛不对任何刷机失败承担任& &何责任。
4、刷机后第一次启动会比较慢。如果出现一直卡在开机界面等故障,请优先使用双清来解决。
5、卡刷时,也先正常双清,然后再刷入卡刷包。
6、双清教程,先关机,然后进入recovery模式,然后:
① wipe data/factory reset
③ wipe cache partition
&&&适合群体& && && && && && && && &
1.追求稳定、安全的原版官方rom用户
2.喜欢纯净,没有预装大量第三方应用
3.不追新、不想经常刷机,可以长期使用
如果觉得好用请给评个分,评分是公款消费,不会扣您的分,多谢您的支持!
附件: 你需要才可以下载或查看附件。没有帐号?
楼主很赞!赏波666
打赏排行榜
楼主共收获打赏:
虚位以待打赏
虚位以待打赏
虚位以待打赏
在线时间0 小时最后登录阅读权限10UID注册时间积分0精华0
, 积分 0, 距离下一级还需 5 积分
主题帖子 金币12 元 智豆0 点
下载试用,谢谢!!!!
在线时间1 小时最后登录阅读权限10UID注册时间积分1精华0
, 积分 1, 距离下一级还需 4 积分
主题帖子 金币16 元 智豆0 点
等了好久,这个可以有吧!
在线时间1 小时最后登录阅读权限10UID注册时间积分1精华0
, 积分 1, 距离下一级还需 4 积分
主题帖子 金币16 元 智豆0 点
再次感谢楼主。
在线时间0 小时最后登录阅读权限10UID注册时间积分1精华0
, 积分 1, 距离下一级还需 4 积分
主题帖子 金币14 元 智豆0 点
很很很好,强大的很。
在线时间584 小时最后登录阅读权限35UID注册时间积分1224精华0
, 积分 1224, 距离下一级还需 576 积分
主题帖子 金币1242 元 智豆0 点
感谢楼主...
在线时间584 小时最后登录阅读权限35UID注册时间积分1224精华0
, 积分 1224, 距离下一级还需 576 积分
主题帖子 金币1242 元 智豆0 点
感谢楼主...
在线时间0 小时最后登录阅读权限10UID注册时间积分1精华0
, 积分 1, 距离下一级还需 4 积分
主题帖子 金币14 元 智豆0 点
来咯哦来咯我了扣扣扣扣来咯无聊哭啦嗯
在线时间0 小时最后登录阅读权限10UID注册时间积分1精华0
, 积分 1, 距离下一级还需 4 积分
主题帖子 金币14 元 智豆0 点
好东西大家分享
在线时间22 小时最后登录阅读权限15UID4372456注册时间积分53精华0
, 积分 53, 距离下一级还需 47 积分
主题帖子 金币120 元 智豆0 点
什么样子的,好用不,谢谢啦?
主要包含文不对题,恶意APP,黄色暴力等违法APP。2525人阅读
说到聊天,就离不开文字、表情和图片,表情和图片增加了聊天的趣味性,让原本无聊的文字瞬间用表情动了起来,今天给大家带来的是表情键盘,教你一步一步实现,先来看下效果图.
1、如何控制表情键盘与输入法的切换
2、如何解析表情
3、如何处理表情与非表情的删除
明确了各个要解决的问题,下面我们逐个来实现
表情键盘与输入法切换
博主查了一下相关资料,有如下方案
方案一:动态改变SoftInputMode
软键盘显示时将SoftInputMode设置为「stateVisible|adjustResize」,表情键盘显示时调整为「adjustPan」
方案二:Dialog
直接在软键盘上显示一个Dialog,可避开大部分切换逻辑,但是在打开当前页面后存在软键盘和Dialog冲突问题
博主在观察QQ、微信、微博、陌陌后发现,他们的表情键盘和软键盘切换,并不会导致聊天内容(ListView、RecyclerView)的跳动,基本就可以推测SoftInputMode就是adjustsPan()
明确了adjustPan那就好办了,既然聊天内容(ListView、RecyclerView)不会跳动,那么在软键盘切换至表情键盘的时候,底部肯定有一个和软键盘高度一致的View,只需在点击表情的时候将软键盘隐藏,显示表情键盘,在点击EditText的时候显示软键盘,隐藏表情键盘。
来梳理一下知识点:
1、如何获取软键盘高度
2、如何手动控制软键盘的显示与隐藏
3、如何避免在别的页面切到当前界面因软键盘的状态变化而冲突
获取软键盘高度
private int getSupportSoftInputHeight() {
Rect r = new Rect()
mActivity.getWindow().getDecorView().getWindowVisibleDisplayFrame(r)
int screenHeight = mActivity.getWindow().getDecorView().getRootView().getHeight()
int softInputHeight = screenHeight - r.bottom
if (Build.VERSION.SDK_INT &= 20) {
// When SDK Level &= 20 (Android L),
// the softInputHeight will contain the height of softButtonsBar (if has)
softInputHeight = softInputHeight - getSoftButtonsBarHeight()
if (softInputHeight & 0) {
Log.w("EmotionInputDetector", "Warning: value of softInputHeight is below zero!")
if (softInputHeight & 0) {
sp.edit().putInt(SHARE_PREFERENCE_TAG, softInputHeight).apply()
return softInputHeight
这里的原理是通过当前Activity获取RootView的高度减去Activity自身的高度,就得到了软键盘的高度,但是发现在有虚拟按键的手机上在没有显示软键盘时减出来的高度总是144,后来查了下资料,发现在API&18时有软键盘的手机需要减去底部虚拟按键的高度。
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private int getSoftButtonsBarHeight() {
DisplayMetrics metrics = new DisplayMetrics();
mActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
int usableHeight = metrics.heightP
mActivity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
int realHeight = metrics.heightP
if (realHeight & usableHeight) {
return realHeight - usableH
把获取到的高度设置给表情键盘
private void showEmotionLayout() {
int softInputHeight = getSupportSoftInputHeight();
if (softInputHeight == 0) {
softInputHeight = sp.getInt(SHARE_PREFERENCE_TAG, 400);
hideSoftInput();
mEmotionLayout.getLayoutParams().height = softInputH
mEmotionLayout.setVisibility(View.VISIBLE);
控制表情的显示与隐藏
private void showSoftInput() {
mEditText.requestFocus();
mEditText.post(new Runnable() {
public void run() {
mInputManager.showSoftInput(mEditText, 0);
private void hideSoftInput() {
mInputManager.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
博主在测试后发现一个问题,点击表情按钮,输入框会抖动,分析下这个过程,点击表情按钮,关闭软键盘,此时Activity的高度发生变化,高度变高,输入框回到底部,再打开表情键盘,此时输入框又被顶上来,输入框看起来上下抖动,经多次测试发现无论是先隐藏软键盘还是先显示表情键盘都存在这个问题,思考过后,既然输入框会上下抖动,那么固定它的位置不就行了,那么问题来了,如何固定它的位置呢?举个栗子,假如在一个LinearLayout里面有若干个控件,如果里面的控件的位置大小都不变,那么即使在软键盘显示和隐藏(Activity的高度发生变化),也不会隐藏输入框的位置,自然也就不会发生跳动问题。
锁定解锁内容高度(ListView、RecyclerView)
private void lockContentHeight() {
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mContentView.getLayoutParams();
params.height = mContentView.getHeight();
params.weight = 0.0F;
private void unlockContentHeightDelayed() {
mEditText.postDelayed(new Runnable() {
public void run() {
((LinearLayout.LayoutParams) mContentView.getLayoutParams()).weight = 1.0F;
表情面板控制
public EmotionInputDetector bindToEmotionButton(final CheckBox emotionButton) {
mEmojiView = emotionB
emotionButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (mEmotionLayout.isShown()) {
lockContentHeight();
hideEmotionLayout(true);
mEmojiView.setChecked(false);
unlockContentHeightDelayed();
if (isSoftInputShown()) {
lockContentHeight();
showEmotionLayout();
mEmojiView.setChecked(true);
unlockContentHeightDelayed();
showEmotionLayout();
return this;
问题分析:
1、如何将表情码和表情建立联系
2、如何给表情分页
3、如何将表情码转换成表情
将表情码和表情以键值对的形式建立联系
ArrayMap&String, Integer& emoJiMap = new ArrayMap&String,Integer&();
key(表情码)value(表情地址)
emoJiMap.put("[emoji_1]",R.drawable.emoji_1)
emoJiMap.put("[emoji_2]",R.drawable.emoji_2)
emoJiMap.put("[emoji_3]",R.drawable.emoji_3)
emoJiMap.put("[emoji_4]",R.drawable.emoji_4)
emoJiMap.put("[emoji_5]",R.drawable.emoji_5)
emoJiMap.put("[emoji_6]",R.drawable.emoji_6)
emoJiMap.put("[emoji_7]",R.drawable.emoji_7)
emoJiMap.put("[emoji_8]",R.drawable.emoji_8)
emoJiMap.put("[emoji_9]",R.drawable.emoji_9)
emoJiMap.put("[emoji_10]",R.drawable.emoji_10)
emoJiMap.put("[emoji_11]",R.drawable.emoji_11)
emoJiMap.put("[emoji_12]",R.drawable.emoji_12)
emoJiMap.put("[emoji_13]",R.drawable.emoji_13)
emoJiMap.put("[emoji_14]",R.drawable.emoji_14)
emoJiMap.put("[emoji_15]",R.drawable.emoji_15)
emoJiMap.put("[emoji_16]",R.drawable.emoji_16)
emoJiMap.put("[emoji_17]",R.drawable.emoji_17)
emoJiMap.put("[emoji_18]",R.drawable.emoji_18)
emoJiMap.put("[emoji_19]",R.drawable.emoji_19)
emoJiMap.put("[emoji_20]",R.drawable.emoji_20)
将表情面板的表情码用List进行保存
List&String& emojiList = new ArrayList&String&();
emojiList.add("[emoji_1]")
emojiList.add("[emoji_2]")
emojiList.add("[emoji_3]")
emojiList.add("[emoji_4]")
emojiList.add("[emoji_5]")
emojiList.add("[emoji_6]")
emojiList.add("[emoji_7]")
emojiList.add("[emoji_8]")
emojiList.add("[emoji_9]")
emojiList.add("[emoji_10]")
emojiList.add("[emoji_11]")
emojiList.add("[emoji_12]")
emojiList.add("[emoji_13]")
emojiList.add("[emoji_14]")
emojiList.add("[emoji_15]")
emojiList.add("[emoji_16]")
emojiList.add("[emoji_17]")
emojiList.add("[emoji_18]")
emojiList.add("[emoji_19]")
emojiList.add("[emoji_20]")
计算表情页
public List&View& getPagers() {
List&View& pageViewList = new ArrayList&&();
mPageNum = (int) Math.ceil(mEmoJiResList.size() * 1.0f / EMOJI_PAGE_COUNT);
for (int position = 1; position &= mPageN position++) {
pageViewList.add(getGridView(position));
return pageViewL
public View getGridView(int position) {
List mEmoJiList = new ArrayList&&();
View containerView = View.inflate(mContext, R.layout.container_gridview, null);
ExpandGridView eg_gridView = (ExpandGridView) containerView.findViewById(R.id.eg_gridView);
eg_gridView.setGravity(Gravity.CENTER_VERTICAL);
List&String& emojiPageList = null;
if (position == mPageNum)
emojiPageList = mEmoJiResList.subList((position - 1) * EMOJI_PAGE_COUNT, mEmoJiResList.size());
emojiPageList = mEmoJiResList.subList((position - 1) * EMOJI_PAGE_COUNT, EMOJI_PAGE_COUNT * position);
mEmoJiList.addAll(emojiPageList);
mEmoJiList.add("[删除]");
final EmoJiAdapter mEmoJiAdapter = new EmoJiAdapter(mContext, position, mEmoJiList);
eg_gridView.setAdapter(mEmoJiAdapter);
eg_gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView&?& parent, View view, int positionIndex, long id) {
String fileName = mEmoJiAdapter.getItem(positionIndex);
if (fileName != "[删除]") {
showEmoJi(fileName);
deleteContent();
return containerV
将表情面板的表情码转解析成表情
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = View.inflate(getContext(), R.layout.item_row_emoji, null)
ImageView imageView = (ImageView) convertView.findViewById(R.id.iv_emoji)
String fileName = getItem(position)
Integer resId = EmoJiUtils.getEmoJiMap().get(fileName)
if (resId != null) {
Drawable drawable = getContext().getResources().getDrawable(resId)
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight())
imageView.setImageResource(resId)
return convertView
输入框表情码转换成表情
public static SpannableString parseEmoJi(Context context, String content) {
SpannableString spannable = new SpannableString(content);
String reg = "\\[[a-zA-Z0-9_\\u4e00-\\u9fa5]+\\]";
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
String regEmoJi = matcher.group();
int start = matcher.start();
int end = matcher.end();
Integer resId = emoJiMap.get(regEmoJi);
if (resId != null) {
Drawable drawable = context.getResources().getDrawable(resId);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
ImageSpan imageSpan = new ImageSpan(drawable, content);
spannable.setSpan(imageSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
private void showEmoJi(String fileName) {
int selectionStart = mInputContainer.getSelectionStart()
String body = mInputContainer.getText().toString()
StringBuilder stringBuilder = new StringBuilder(body)
stringBuilder.insert(selectionStart, fileName)
mInputContainer.setText(EmoJiUtils.parseEmoJi(mContext, stringBuilder.toString()))
mInputContainer.setSelection(selectionStart + fileName.length())
private void deleteContent() {
if (!TextUtils.isEmpty(mInputContainer.getText())) {
int selectionStart = mInputContainer.getSelectionStart();
if (selectionStart & 0) {
String body = mInputContainer.getText().toString();
String lastStr = body.substring(selectionStart - 1, selectionStart);
if (lastStr.equals("]")) {
if (selectionStart & body.length()) {
body = body.substring(0, selectionStart);
int i = body.lastIndexOf("[");
if (i != -1) {
String tempStr = body.substring(i, selectionStart);
if (EmoJiUtils.getEmoJiMap().containsKey(tempStr)) {
mInputContainer.getEditableText().delete(i, selectionStart);
mInputContainer.getEditableText().delete(selectionStart - 1, selectionStart);
mInputContainer.getEditableText().delete(selectionStart - 1, selectionStart);
mInputContainer.getEditableText().delete(selectionStart - 1, selectionStart);
访问:17454次
排名:千里之外
原创:26篇
(1)(1)(1)(2)(1)(2)(1)(5)(13)

我要回帖

更多关于 oppo键盘表情很少 的文章

 

随机推荐