项目地址

  • 官网地址:https://github.com/stfalcon-studio/ChatKit
  • 官方有比较详细的说明,不过时英文的。
  • 本篇源码:
    • Gitee:https://gitee.com/up55/chatkit-test
    • CSND :https://download.csdn.net/download/JieZhongBa/20030052?spm=1001.2014.3001.5501

官方demo

强烈建议把官方的demo跑出来,可以看到他的效果,还有他的实现方式,毕竟能参考资料真的不多。
部分效果:

使用的时候主要就是结合GitHub里的教程和demo。其实官方给出的教程也比较详细了。

利用demo快速搭建

1. 依赖

首先创建一个新项目,并添加依赖。
先在项目全局gradle中加上这个,才正确导入。

allprojects {repositories {...maven { url "https://jitpack.io" }}
}

再加依赖,第二个是图像加载的,使用简单,用来加载头像图片之类的。

//Chatkit
implementation 'com.github.stfalcon-studio:Chatkit:0.4.1'
//Picasso
implementation "com.squareup.picasso:picasso:2.71828"

2. 布局

页面布局,添加会话列表

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity">//会话列表<com.stfalcon.chatkit.dialogs.DialogsListandroid:id="@+id/dialogList"android:layout_width="match_parent"android:layout_height="match_parent"/></RelativeLayout>

3. 实体类

编写实体类,官方已经提供了接口,需要自己实现,这里直接用demo里的,也可自己实现更多效果。
直接复制demo三个实体类,省事。可自行调整。
复制这三个类

4. 数据源

为了方便展示效果,列表的数据源先用demo中的数据,就是写死在代码中,一些数组,存了图片地址、用户名、对话这些,获取数据的时候随机拉取一些,拼凑成聊天记录。demo已经封装好了,直接一个方法调用,很方便,后面再自己替换成自己的数据就好了。
复制下图三个类,他们用了上面三个实体类,复制过来要重新import一下。
其中FixturesData这个类是提供数据的,里面的图片链接有些已经打不开了,自己去网上找几个连接贴上去就好,另外别忘了声明网络权限。

5. 适配器

在activity的onCreate中初始化列表

private DialogsList dialogsList;
private DialogsListAdapter<Dialog> dialogsListAdapter;@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);dialogsList = findViewById(R.id.dialogList);//初始化适配器并添加图像加载dialogsListAdapter=new DialogsListAdapter<>((imageView, url, payload) -> Picasso.get().load(url).into(imageView));//通过DialogsFixtures给予列表初始数据dialogsListAdapter.addItems(DialogsFixtures.getDialogs());//item项的点击事件,跳转到聊天界面dialogsListAdapter.setOnDialogClickListener(dialog -> {startActivity(new Intent(this,chat.class));});dialogsList.setAdapter(dialogsListAdapter);
}

最简单的构造就是这样了,跑一跑看看效果吧。
还有其他的方法,如item项的长按事件,等,可以参考官方文档。
一些常用的构造器方法:

添加多个会话:addItems(List)
添加单个会话:addItem(索引位置, Dialog);
可以通过item项的set方法更改数据改变会话。
刷新列表:notifyDataSetChanged()
item点击事件:setOnDialogClickListener()
item长按事件:setOnDialogLongClickListener()
···

6. 聊天界面布局

接下来是聊天界面
xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".chat"><com.stfalcon.chatkit.messages.MessagesListandroid:id="@+id/messagesList"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_above="@+id/input" /><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:layout_above="@+id/input"android:layout_marginLeft="16dp"android:layout_marginRight="16dp"android:background="#e8e8e8" /><com.stfalcon.chatkit.messages.MessageInputandroid:id="@+id/input"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"app:inputHint="Message"app:showAttachmentButton="true" /></RelativeLayout>

7. 聊天界面适配器

适配器,看注释吧

public class chat extends AppCompatActivity implements MessagesListAdapter.OnLoadMoreListener{private MessagesList messagesList;private MessageInput input;private MessagesListAdapter<Message> messagesListAdapter;private Date lastLoadedDate;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_chat);messagesList = findViewById(R.id.messagesList);input = findViewById(R.id.input);/** senderId:自己的id,用于区分自己和对方,控制消息气泡的位置。* imageLoader:图像加载器** */messagesListAdapter = new MessagesListAdapter<>("0", (imageView, url, payload) -> Picasso.get().load(url).into(imageView));//滑倒顶部时加载历史记录messagesListAdapter.setLoadMoreListener(this);//发送输入框中的文本,addToStart的第二个参数是列表滚动到底部input.setInputListener(input1 -> {messagesListAdapter.addToStart(MessagesFixtures.getTextMessage(input1.toString()), true);return true;});//小加号按钮点击事件,发送一张图片input.setAttachmentsListener(() -> {//第二个参数表示是否滚动列表到最底部messagesListAdapter.addToStart(MessagesFixtures.getImageMessage(), true);});messagesList.setAdapter(messagesListAdapter);//初始化时调用一次加载历史记录onLoadMore(0,1);}//滚动到顶部加载历史记录@Overridepublic void onLoadMore(int page, int totalItemsCount) {new Handler().postDelayed(() -> {ArrayList<Message> messages = MessagesFixtures.getMessages(lastLoadedDate);lastLoadedDate = messages.get(messages.size() - 1).getCreatedAt();messagesListAdapter.addToEnd(messages, false);}, 1000);}
}

好了这样就能跑了,看看效果吧。

最终效果:

更多效果

可以自定义item样式,但是id必须对应,而官方demo中已经有多个模板,基本上够用了,复制过来即可,也可以自己稍作修改,详情见官方文档很demo。

GitHub聊天通信开源UI框架stfalcon-studio/ChatKit使用教程相关推荐

  1. 结合BeautyEye开源UI框架实现的较美观的Java桌面程序

    BeautyJavaSwingRobot 结合BeautyEye开源UI框架实现的较美观的Java桌面程序,主要功能就是图灵机器人和一个2345网站万年历的抓取.... 挺简单而且实用的一个项目,实现 ...

  2. android 酷炫编辑框_25个实用酷炫的Android开源UI框架

    最近找了一些合适开源控件,这样在日常工作中会更加省时,再此分享给大家,希望能对大家有帮助,此博文介绍的都是UI上面的框架,接下来会有其他的开源框架(如:HTTP框架.DB框架). 1.Side-Men ...

  3. Android 开源UI框架汇总

    1. github排名 https://github.com/trending,github搜索:https://github.com/search 2.https://github.com/wasa ...

  4. wpf ui框架_RapidCAX 开源UI框架

    微信公众号:AnyCAD专注打造新一代图形平台,助每一个工业软件成功! RapidCAX UI框架 从零开始搭建CAD/CAE/CAM的UI框架是一件繁琐的事情:需要选组件.集成组件以及各种配置.若集 ...

  5. semantic ui中文文档_Vuetify-广受欢迎的Material风格的开源UI框架

    全世界范围内广受欢迎的 Vue UI 框架,一个非常精致的 Material Design UI 套件. Material Design 风格 UI 框架 Vuetify 是一个基于 Vue.js 精 ...

  6. 分享两个超实用的Android开源UI框架——QMUI和XUI

    目录 QMUI_Android 功能特性 全局 UI 配置 丰富的 UI 控件 高效的工具方法 功能列表 支持 Android 版本 使用方法 QMUI Demo APP 安装包下载 XUI 特征 演 ...

  7. android 漂亮的开源ui框架

    Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...

  8. Alibaba开源UI框架V-Layout

    最近水掘金的次数大幅度增长,毕竟日推的文章部分还是有很多含金量的.比如前两天看到的来自阿里巴巴开源的UI框架V-layout. V-Layout,全称VirtualLayout,是一个针对Recycl ...

  9. 整理 酷炫 Android 开源UI框架 Navigation

    Side-Menu.Android 分类侧滑菜单,Yalantis 出品. 项目地址:https://github.com/Yalantis/Side-Menu.Android 项目Demo:Side ...

最新文章

  1. Block的声明和线程安全
  2. Mysql计算出年纪
  3. java csf_WebService CSF使用详解 | 学步园
  4. java中计时器的用法Timer和TimerTask的用法__java中利用Timer与TImerTask 计时器间隔执行任务...
  5. android richtext显示html,【报Bug】关于rich-text显示html 的问题
  6. element tabs 添加事件_JavaScript-跨浏览器事件处理程序-Web前端教程
  7. java 求集合真子集_【同步练习】高一高中数学必修1集合的关系与元素性质
  8. 使用 ADOX 将 Table 添加到 Catalog 时报“类型无效”的原因和解决方法
  9. CISCO路由器连接ADSL之PPPoE配置
  10. Little Kings - SGU 223(状态压缩)
  11. 数据交互什么意思_学习编程怎么样才可以不枯燥?什么是前端语言?
  12. SketchUp2019下载SU2019下载安装教程SketchUp草图大师2019下载安装详细教程
  13. 计算机矩阵入门(eigen)0XC000041D
  14. Iptables-外网地址及端口映射到内网地址及端口
  15. 上海电力大学计算机专业全国排名,上海电力大学有哪些专业 上海电力大学专业排名...
  16. 厦门大学c语言2017,厦门大学2017年各专业录取分数线
  17. 使用讯飞语音识别的空指针错误
  18. 访问者模式(JAVA)
  19. Android 高清加载长图或大图方案
  20. 网页版JS游戏五子棋单机版也可以改版成网络版

热门文章

  1. 【深度学习基础】一步一步讲解卷积神经网络
  2. 线性求[1,P-1]的逆元
  3. CentOS 7安装gitlab服务器
  4. java-第十一章-类的无参方法-计算器运算
  5. C与指针课后答案与编程练习(第一章)
  6. 使用Composer安装Laravel步骤
  7. 数据库事务的四大特性和隔离级别
  8. Unity3d多线程
  9. ORACLE数据库对比表结构
  10. 微软虚拟学院开学了!