# XhsEmoticonsKeyboard
**Repository Path**: xxrl2018/XhsEmoticonsKeyboard
## Basic Information
- **Project Name**: XhsEmoticonsKeyboard
- **Description**: 开源表情键盘
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2025-09-23
- **Last Updated**: 2025-09-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# XhsEmoticonsKeyboard
**本项目是基于开源项目XhsEmoticonsKeyboard进行ohos化的移植和开发的,可以通过项目标签以及github地址(https://github.com/w446108264/XhsEmoticonsKeyboard )追踪到原项目版本**
#### 项目介绍
- 项目名称:开源表情键盘
- 所属系列:ohos的第三方组件适配移植
- 功能:
1. 微信键盘样式
2. 插入emoji表情集
3. 插入xhs表情集
4. 插入微信表情集
5. 插入我们爱学习表情集
6. 插入颜文字表情集
7. 插入测试页集
8. 展示消息列表,支持发送消息并插入
9. 组件支持完全自定义,样式支持任意更改
10. 赠送QQ键盘高仿
- 项目移植状态:完成
- 调用差异:无
- 项目作者和维护人:hihope
- 联系方式:hihope@hoperun.com
- 原项目Doc地址:https://github.com/w446108264/XhsEmoticonsKeyboard
- 原项目基线版本:无
- 编程语言:Java
#### 效果展示

#### 安装教程
方法1.
1. 下载XhsEmoticonsKeyboard的har包。
2. 启动 DevEco Studio,将下载的har包,导入工程目录“entry->libs”下。
3. 在moudle级别下的build.gradle文件中添加依赖,在dependences标签中增加对libs目录下har包的引用。
```
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
……
}
```
4. 在导入的har包上点击右键,选择“Add as Library”对包进行引用,选择需要引用的模块,并点击“OK”即引用成功。
方法2.
1. 在工程的build.gradle的allprojects中,添加HAR所在的Maven仓地址
```
repositories {
maven {
url 'http://106.15.92.248:8081/repository/Releases/'
}
}
```
2. 在应用模块的build.gradle的dependencies闭包中,添加如下代码:
```
dependencies {
implementation 'com.sj.ohos:emoticonkeyboard:1.0.1'
implementation 'com.sj.ohos:reclib_testemoticons:1.0.1'
implementation 'com.sj.ohos:reclib_qq:1.0.1'
implementation 'com.sj.ohos:emoji:1.0.1'
}
```
#### 使用说明
1. 添加布局
```
```
2. 初始化表情符号键盘栏
```
SimpleCommonUtils.initEmoticonsEditText(ekBar.getEtChat());
ekBar.setAdapter(SimpleCommonUtils.getCommonAdapter(this, emoticonClickListener));
ekBar.addFuncView(new SimpleAppsGridView(this));
ekBar.getEtChat().setOnSizeChangedListener((w, h, oldw, oldh) -> scrollToBottom());
ekBar.getBtnSend().setClickedListener(v -> {
OnSendBtnClick(ekBar.getEtChat().getText());
ekBar.getEtChat().setText("");
});
ekBar.getEmoticonsToolBarView().addFixedToolItemView(false, ResourceTable.Media_icon_add, null, v ->
new ToastDialog(SimpleTranslucentChatAbilitySlice.this)
.setText("ADD")
.setAlignment(LayoutAlignment.CENTER)
.setDuration(3000)
.show());
ekBar.getEmoticonsToolBarView().addToolItemView(ResourceTable.Media_icon_setting, v ->
new ToastDialog(SimpleTranslucentChatAbilitySlice.this)
.setText("SETTING")
.setAlignment(LayoutAlignment.CENTER)
.setDuration(3000)
.show());
```
3. 初始化聊天列表
```
chattingListAdapter = new ChattingListAdapter(this);
List beanList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
ImMsgBean bean = new ImMsgBean();
bean.setContent("Test:" + i);
beanList.add(bean);
}
chattingListAdapter.addData(beanList);
lvChat.setItemProvider(chattingListAdapter);
lvChat.setTouchEventListener(new Component.TouchEventListener() {
@Override
public boolean onTouchEvent(Component component, TouchEvent touchEvent) {
if (touchEvent.getAction() == TouchEvent.PRIMARY_POINT_DOWN) {
ekBar.reset();
}
return false;
}
});
```
4. 表情符号键盘点击事件
```
EmoticonClickListener emoticonClickListener = new EmoticonClickListener() {
@Override
public void onEmoticonClick(Object o, int actionType, boolean isDelBtn) {
if (isDelBtn) {
SimpleCommonUtils.delClick(ekBar.getEtChat());
} else {
if (o == null) {
return;
}
if (actionType == Constants.EMOTICON_CLICK_BIGIMAGE) {
if (o instanceof EmoticonEntity) {
OnSendImage(((EmoticonEntity) o).getIconUri());
}
} else {
String content = null;
if (o instanceof EmojiBean) {
content = ((EmojiBean) o).emoji;
} else if (o instanceof EmoticonEntity) {
content = ((EmoticonEntity) o).getContent();
}
if (content == null || content.isEmpty()) {
return;
}
ekBar.getEtChat().insert(content);
}
}
}
};
```
5. 插入表情集数据
```
public static PageSetAdapter getCommonAdapter(Context context, EmoticonClickListener emoticonClickListener) {
PageSetAdapter pageSetAdapter = new PageSetAdapter();
addEmojiPageSetEntity(pageSetAdapter, context, emoticonClickListener);
addXhsPageSetEntity(pageSetAdapter, context, emoticonClickListener);
addWechatPageSetEntity(pageSetAdapter, context, emoticonClickListener);
addGoodGoodStudyPageSetEntity(pageSetAdapter, context, emoticonClickListener);
addKaomojiPageSetEntity(pageSetAdapter, context, emoticonClickListener);
addTestPageSetEntity(pageSetAdapter, context);
return pageSetAdapter;
}
```
#### 版本迭代
- v1.0.1
#### 版权和许可信息
- MIT Licence