android表情面板怎么做,Android 表情面板的展示和表情的显示
前言
在Android项目中由于是社交类的项目,所以里面用到了表情,表情是emoji表情,所以实现了之后,弄个demo分享一下,主要实现了表情的选择和显示,只是一个demo,剩下的靠大家自己去扩展
国际惯例,先来个效果
demo比较简单,就是展示表情并且点击之后显示在TextView上,如果你不会,那就往下一起做吧!
xml布局
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.yoursecondworld.emojidemo.MainActivity">
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/rv"
android:text="我是TextView" />
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_alignParentBottom="true" />
列表是使用的是v7包里面的RecyclerView控件,然后上面有一个文本控件
列表使用的item的xml布局
android:layout_width="wrap_content"
android:layout_height="wrap_content">
android:id="@+id/iv"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_centerInParent="true"
android:src="@mipmap/emoji_0" />
Activity中代码
public class MainActivity extends AppCompatActivity {
private RecyclerView rv = null;
private TextView tv = null;
/**
* 显示表情的适配器
*/
private CommonRecyclerViewAdapter adapter = null;
/**
* 管理表情的布局管理器
*/
private StaggeredGridLayoutManager layoutManager = null;
/**
* 显示的数据
*/
private List data = new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化列表控件
rv = (RecyclerView) findViewById(R.id.rv);
tv = (TextView) findViewById(R.id.tv);
//添加emoji表情资源
addAllEmogi();
rv.setBackgroundColor(Color.GRAY);
//创建适配器
adapter = new SelectEmojiFragmentAdapter(this, data);
//创建布局管理器
layoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.HORIZONTAL);
rv.setLayoutManager(layoutManager);
//创建条目间隔
EmojiSpaceItemDecoration itemDecoration = new EmojiSpaceItemDecoration();
rv.addItemDecoration(itemDecoration);
//设置适配器
rv.setAdapter(adapter);
adapter.setOnRecyclerViewItemClickListener(new CommonRecyclerViewAdapter.OnRecyclerViewItemClickListener() {
@Override
public void onItemClick(View v, int position) {
SpannableString s = new SpannableString("emoji");
ImageSpan i = new ImageSpan(MainActivity.this, data.get(position));
s.setSpan(i, 0, 5, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(s);
}
});
}
/**
* 加入所有表情
*/
private void addAllEmogi() {
data.add(R.mipmap.emoji_0);
data.add(R.mipmap.emoji_1);
data.add(R.mipmap.emoji_2);
data.add(R.mipmap.emoji_3);
data.add(R.mipmap.emoji_4);
data.add(R.mipmap.emoji_5);
data.add(R.mipmap.emoji_6);
data.add(R.mipmap.emoji_7);
data.add(R.mipmap.emoji_8);
data.add(R.mipmap.emoji_9);
data.add(R.mipmap.emoji_10);
data.add(R.mipmap.emoji_11);
data.add(R.mipmap.emoji_12);
data.add(R.mipmap.emoji_13);
data.add(R.mipmap.emoji_14);
data.add(R.mipmap.emoji_15);
data.add(R.mipmap.emoji_16);
data.add(R.mipmap.emoji_17);
data.add(R.mipmap.emoji_18);
data.add(R.mipmap.emoji_19);
data.add(R.mipmap.emoji_20);
data.add(R.mipmap.emoji_21);
data.add(R.mipmap.emoji_22);
data.add(R.mipmap.emoji_23);
data.add(R.mipmap.emoji_24);
data.add(R.mipmap.emoji_25);
data.add(R.mipmap.emoji_26);
data.add(R.mipmap.emoji_27);
data.add(R.mipmap.emoji_28);
data.add(R.mipmap.emoji_29);
data.add(R.mipmap.emoji_30);
data.add(R.mipmap.emoji_31);
data.add(R.mipmap.emoji_32);
data.add(R.mipmap.emoji_33);
data.add(R.mipmap.emoji_34);
data.add(R.mipmap.emoji_35);
data.add(R.mipmap.emoji_36);
data.add(R.mipmap.emoji_37);
data.add(R.mipmap.emoji_38);
data.add(R.mipmap.emoji_39);
data.add(R.mipmap.emoji_40);
data.add(R.mipmap.emoji_41);
data.add(R.mipmap.emoji_42);
data.add(R.mipmap.emoji_43);
data.add(R.mipmap.emoji_44);
data.add(R.mipmap.emoji_45);
data.add(R.mipmap.emoji_46);
data.add(R.mipmap.emoji_47);
data.add(R.mipmap.emoji_48);
data.add(R.mipmap.emoji_49);
data.add(R.mipmap.emoji_50);
data.add(R.mipmap.emoji_51);
data.add(R.mipmap.emoji_52);
data.add(R.mipmap.emoji_53);
data.add(R.mipmap.emoji_54);
data.add(R.mipmap.emoji_55);
data.add(R.mipmap.emoji_56);
data.add(R.mipmap.emoji_57);
data.add(R.mipmap.emoji_58);
data.add(R.mipmap.emoji_59);
data.add(R.mipmap.emoji_60);
data.add(R.mipmap.emoji_61);
data.add(R.mipmap.emoji_62);
data.add(R.mipmap.emoji_63);
data.add(R.mipmap.emoji_64);
data.add(R.mipmap.emoji_65);
data.add(R.mipmap.emoji_66);
data.add(R.mipmap.emoji_67);
data.add(R.mipmap.emoji_68);
data.add(R.mipmap.emoji_69);
data.add(R.mipmap.emoji_70);
data.add(R.mipmap.emoji_71);
data.add(R.mipmap.emoji_72);
data.add(R.mipmap.emoji_73);
data.add(R.mipmap.emoji_74);
data.add(R.mipmap.emoji_75);
data.add(R.mipmap.emoji_76);
data.add(R.mipmap.emoji_77);
data.add(R.mipmap.emoji_78);
data.add(R.mipmap.emoji_79);
data.add(R.mipmap.emoji_80);
data.add(R.mipmap.emoji_81);
data.add(R.mipmap.emoji_82);
data.add(R.mipmap.emoji_83);
data.add(R.mipmap.emoji_84);
data.add(R.mipmap.emoji_85);
data.add(R.mipmap.emoji_86);
data.add(R.mipmap.emoji_87);
data.add(R.mipmap.emoji_88);
data.add(R.mipmap.emoji_89);
data.add(R.mipmap.emoji_90);
data.add(R.mipmap.emoji_91);
data.add(R.mipmap.emoji_92);
data.add(R.mipmap.emoji_93);
data.add(R.mipmap.emoji_94);
data.add(R.mipmap.emoji_95);
data.add(R.mipmap.emoji_96);
data.add(R.mipmap.emoji_97);
data.add(R.mipmap.emoji_98);
data.add(R.mipmap.emoji_99);
data.add(R.mipmap.emoji_100);
data.add(R.mipmap.emoji_101);
data.add(R.mipmap.emoji_102);
data.add(R.mipmap.emoji_103);
data.add(R.mipmap.emoji_104);
data.add(R.mipmap.emoji_105);
data.add(R.mipmap.emoji_106);
data.add(R.mipmap.emoji_107);
data.add(R.mipmap.emoji_108);
data.add(R.mipmap.emoji_109);
data.add(R.mipmap.emoji_110);
data.add(R.mipmap.emoji_111);
data.add(R.mipmap.emoji_112);
data.add(R.mipmap.emoji_113);
data.add(R.mipmap.emoji_114);
data.add(R.mipmap.emoji_115);
data.add(R.mipmap.emoji_116);
data.add(R.mipmap.emoji_117);
data.add(R.mipmap.emoji_118);
data.add(R.mipmap.emoji_119);
data.add(R.mipmap.emoji_120);
data.add(R.mipmap.emoji_121);
data.add(R.mipmap.emoji_122);
data.add(R.mipmap.emoji_123);
data.add(R.mipmap.emoji_124);
data.add(R.mipmap.emoji_125);
data.add(R.mipmap.emoji_126);
data.add(R.mipmap.emoji_127);
data.add(R.mipmap.emoji_128);
data.add(R.mipmap.emoji_129);
}
}
可以看到我们有一个方法很长,就是添加表情的id到我们的集合中去的,因为要在列表中显示嘛!
布局管理器用了v7包里面自带的StaggeredGridLayoutManager,有横向和纵向的GridView的效果
适配器为了快速,使用了通用适配器,如果不明白的可以参看我另一篇博客,传送门:
适配器的代码
/**
* Created by cxj on 2016/7/30.
* 显示表情的适配器
*/
public class SelectEmojiFragmentAdapter extends CommonRecyclerViewAdapter {
/**
* 构造函数
*
* @param context 上下文
* @param data 显示的数据
*/
public SelectEmojiFragmentAdapter(Context context, List data) {
super(context, data);
}
@Override
public void convert(CommonRecyclerViewHolder h, Integer entity, int position) {
h.setImage(R.id.iv, entity);
}
@Override
public int getLayoutViewId(int viewType) {
return R.layout.item;
}
}h.setImage(R.id.iv, entity);这句代码其实就是获取了item中的ImageView控件,然后设置了图片资源,这里只不是被封装了罢了,你们可以使用原始的
在Activity里面注册的item点击事件里面,我们创建了一个可扩展的字符串,他是显示表情的最关键的东西.至于它怎么使用的,麻烦大家自己去查阅吧,网上用法很多,这里就不复制用法过来了
还是老规矩,下面放出源码下载
android表情面板怎么做,Android 表情面板的展示和表情的显示相关推荐
- android支付宝余额怎么做,android实现类似于支付宝余额快速闪动的效果
效果如下: 此图片不会动,但实际上是会快速跳动的. 之前看到有支付宝的效果非常牛逼.就是进去看到余额呼噜噜的直接上蹿下跳到具体数字,效果帅,但不知道怎么实现,最近终于知道了. 思路: 首先经常用到倒计 ...
- android支付宝余额怎么做,android编程实现类似于支付宝余额快速闪动效果的方法...
本文实例讲述了android编程实现类似于支付宝余额快速闪动效果的方法.分享给大家供大家参考,具体如下: 效果如下: 此图片不会动,但实际上是会快速跳动的. 之前看到有支付宝的效果非常牛逼.就是进去看 ...
- android ota功能,如何做android应用的OTA升级
现有的框架好像没见过,说下具体的实现思路 1.app在启动的时候去指定的url上拿去一个版本配置文件,这个配置文件可以是txt或者json或者xml格式,根据个人爱好决定. 主要的字段有 appVer ...
- android支付宝余额怎么做,android实现类似于支付宝余额快速闪动的效果 -电脑资料...
思路: 首先经常用到倒计时操作, 增加的数字和间隔!你懂.继续..然后让他快速从一定数字跳动到具体的总额数字,无废话了..看Demo看效果 代码: 直接调用执行: private void initA ...
- Android腾讯微博客户端开发四:微博发送篇(QQ表情,@搜索)
凌晨发帖不容易啊, :cry: 有一个问题,谁做过android的自定义表情啊?貌似还没有发现有客户端有,都是图片,如果能像在电脑上那样自定义表情的功能多好,那位大哥知道,麻烦告知一声,呵呵.写完,睡 ...
- android添加文本框代码,Android输入框添加emoje表情图标的实现代码
前言 再次写聊天的时候才发现,代码积累是一件非常重要的事情,就如这篇博客的意图其实就是代码积累的目的,其实没什么难度,但是一件很琐碎的事情真的也需要时间去完成和调试,所以,获取你在写一个功能的时候会觉 ...
- android人脸情绪识别器,基于Android平台的人脸表情识别系统的设计与实现
摘要: 随着目前移动设备硬件技术的不断发展,其性能与PC的差距越来越小,这使得在嵌入式平台上进行图像处理成为了可能.目前使用最广泛的是基于Android系统的嵌入式平台,与之相关的图像类应用需求也渐渐 ...
- android 轻松实现在线即时聊天【图片、语音、表情、文字】等!含源码!
之前做够在线及时聊天,小型企业基本上都是通过xmpp协议实现,但是我之前公司做的多多少少会出现一些问题,今天在查找资料的时候,无意发现了一个很好的东西,某公司开发了一套即时聊天sdk,虽然也是由xmp ...
- 关于做Android+J2ee系统集成开发的一点心得
前言: 很早以前,就听人说过android以后会火起来,作为一个前瞻性,对它有所了解会是一个转型的好机会.javaweb太成熟饱和了,现在市面上各种android手机层出不穷,网上各种android视 ...
最新文章
- 苹果CEO乔布斯如何工作
- python编程视频-Python开发视频百度就得看这个!
- 新增的querySelector、querySelectorAll测试
- IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boo
- 数据挖掘 pandas基础入门之查看数据
- idea新建springboot后端到前端_码云开源项目:利用SpringBoot+Vue 实现留言版
- Kubernetes 在宜信落地实践
- Some exceptional case in WebUI Component Repository Information System Design
- python-发邮件脚本
- python生成数字_Python生成数字图片代码分享
- DM8168的SPI接口
- SMP IRQ affinity
- 大数据分析推动业务增长的方法有哪些
- 51单片机LCD12864程序移植到STM32F103C
- java文件保险柜,java
- 集成百度做敏感词鉴定
- app登录策略实现(短信+一键登录+微信+微信小程序+抖音+抖音小程序)
- 自建ngrok服务支持https访问
- 奋斗吧之“和loser对话”小故事
- zbb20170630 web项目发布至tomcat的ROOT下方法(开发环境和部署环境)