Xamarin.Forms Android真机使用ChatKit快速搭建即时聊天界面,以前在做Xamarin.Android项目时,因为对Android的界面描述方案(Layout.xml)并不熟悉,而又想尽快的搭起IM的界面(仿微信、仿QQ等),在开源社区找方案最适合不过了。
Xamarin.Forms使用ChatKit
效果视频:
教程:
1.Xamarin项目Android端安装安卓nuget包
Install-Package XamarinLibrary.Xamarin.Android.ChatKit -Version 0.3.3
2.参考原作者Android原生源码用法对照调用C#相应函数;
3.在Xamarin方面将ChatKit相关控件使用Renderer方案在Xamarin.Forms显示;
4.涉及Xamarin.Forms、Xamarin.Android的layout.xml以及Renderer的使用时,可以参考源码示例的代码进行相应处理。(涉及Android的Inflate函数相关知识)
其他资料:
Xamarin.Forms 演示ChatKit的Sample的源码:
https://github.com/jingliancui/XamarinFormsChatKitSample
原生Android的ChatKit源码:
https://github.com/stfalcon-studio/ChatKit
原生Android的ChatKit的使用方法:
DialogsList(对话列表控件):
https://github.com/stfalcon-studio/ChatKit/blob/master/docs/COMPONENT_DIALOGS_LIST.MD
MessagesList(消息列表控件):
https://github.com/stfalcon-studio/ChatKit/blob/master/docs/COMPONENT_MESSAGES_LIST.md
MessageInput(消息发送控件):
https://github.com/stfalcon-studio/ChatKit/blob/master/docs/COMPONENT_MESSAGE_INPUT.MD
微软官方Renderer教程示例:
后话:
以前在做Xamarin.Android项目时,因为对Android的界面描述方案(Layout.xml)并不熟悉,而又想尽快的搭起IM的界面(仿微信、仿QQ等),在开源社区找方案最适合不过了。
不过到了forms的话,除了使用renderer的方案,我们也可以使用xaml界面描述方案写出IM的界面了。
如果对本示例使用的nuget包有疑问,请参考文章转换ChatKit为Xamarin.Android绑定库0.3.3,也可以在公众号留言或者Github发起相关issue与我进行相关技术交流。
转换ChatKit为Xamarin.Android绑定库0.3.3
已经可以使用的库:
Android 0.3.3 nuget:
Install-Package XamarinLibrary.Xamarin.Android.ChatKit -Version 0.3.3
Github开源库(Apache License 2.0):
https://github.com/jingliancui/XamarinAndroidChatKit
Android源码
https://github.com/stfalcon-studio/ChatKit
Features
快速实现聊天界面实现的开箱即用的解决方案;
可以使用默认或者自定义的媒体信息;
完全支持自定义布局-支持设置多种风格(使用你自己的颜色、字体、图片、选择器和大小)或者为了达到独特的行为创建你自己的自定义markup与holder;
对话列表,包括tete-a-tete和群聊、未读消息标记和最后用户消息view;
具有历史分页和已计算日期headers的消息列表(发送和接收);
没有具体的图像加载实现-你可以使用任何你想用的库进行加载(当然xamairn和.net standard的库也可以了);
与消息交互的selection mode;
高亮link;
简单的设置时间格式显示方式;
自定义的对话数据模型与消息数据模型;
开箱即用的发送组件(含输入框与发送消息按钮);
自定义的动画(通过使用RecyclerView)。
通过使用库中的以下组件就可以实现以上列出的特性:
DialogsList
MessagesList
MessageInput
后话
以前做xamarin.android的项目的时候,在做IM功能的时候,因为没有UI设计师的界面设计,所以就找到了这个库,只要根据它的文档进行相关的界面设计,让整体风格融入产品风格中。代码方面也设计的十分灵活,只要设置好我们的数据模型(根据他的接口规范实现)就可以直接用了。
转载文章,原文链接:https://mp.weixin.qq.com/s?__biz=MjM5MTc4MDM1MQ==&mid=2651731493&idx=1&sn=192d43665fb238207b142afc3226be5e