# 云信 UI 组件使用说明
云信 UI 组件提供了构建IM功能所需的基本功能模块:聊天窗口、最近联系人列表、通讯录列表、联系人选择器、群名片。其他功能有:照片选择、查看大图、视频采集与播放。
UI组件工程提供了较为简洁的接口,开发者可基于组件快速的实现聊天界面和最近联系人功能,并实现基础的一些定制化开发。云信的 UI 组件完全开源,如果开发者希望修改界面,只需要通过替换界面资源,修改layout 等方式即可实现。如果开发者希望更深层次的自定义,也可自行修改代码。
## <span id="初始化 UI 组件"> 初始化 UI 组件 </span>
导入UIKit
- [Eclipse导入UIKit](http://note.youdao.com/share/?id=a8e904df99e1a114c5b565568a19906d&type=note "target=_blank")
- [Android Studio导入UIKit](http://note.youdao.com/share/?id=66d12a2aa10b37928b869feaef54ec3e&type=note "target=_blank")
并在 Application 中初始化:
```
public class NimApplication extends Application {
public void onCreate() {
// ... your codes
// 初始化云信SDK
NIMClient.init(this, loginInfo(), options());
// ... your codes
if (inMainProcess()) {
// 在主进程中初始化UI组件,判断所属进程方法请参见demo源码。
initUiKit();
// ... your codes
}
}
private void initUiKit() {
// 设置用户资料提供者(必须),通讯录提供者(必须)
NimUIKit.init(this, new UserInfoProvider(){ ... }, new ContactProvider() { ... });
// 注册定位信息提供者类(可选),如果需要发送地理位置消息,必须提供。
// demo中使用高德地图实现了该提供者,开发者可以根据自身需求,选用高德,百度,google等任意第三方地图和定位SDK。
NimUIKit.setLocationProvider(new NimDemoLocationProvider());
// 会话窗口的定制初始化: 示例代码可详见demo源码中的SessionHelper类。
// 1.注册自定义消息附件解析器(可选)
// 2.注册各种扩展消息类型的显示ViewHolder(可选)
// 3.设置会话中点击事件响应处理(一般需要)
SessionHelper.init();
// 通讯录列表定制初始化:示例代码可详见demo源码中的ContactHelper类。
// 1.设置通讯录列表中点击事响应处理(一般需要)
ContactHelper.init();
}
```
UIKit 中用到的 Activity 已经在 uikit 工程的 AndroidManifest.xml 文件中注册好,上层 APP 的AndroidManifest 文件无需再去添加注册。除观看视频的 WatchVideoActivity 需要用到黑色主题,因此单独写了 style 外,其他 Activity 均使用项目默认主题。
同只使用 nimlib SDK 一样,需要参考接入云信 SDK 指南文档,在 AndroidManifest 文件中声明云信 SDK 所用到的 service 和 BroadcastReceiver 组件。
`NimUIKit` 是 UIKit 的接口,提供了 UI 组件的所有能力,上述初始化代码中的注册、设置等函数中均在 `NimUIKit` 中,下文将逐一介绍。
### <span id="设置用户资料提供者"> 设置用户资料提供者</span>
网易云信不托管用户资料数据,用户资料由第三方 APP 服务器自行管理,当 UI 组件显示需要用到用户资料(`UserInfo`)时,会通过 `UserInfoProvider` 来获取,开发者在初始化 UIKit 时必须设置用户资料提供者,需要实现:
- 根据用户帐号返回用户资料,一般 APP 的设计会先从本地缓存中获取,当本地缓存中没有时,则需要异步请求远程服务器,当数据返回时需要通知 UIKit 刷新界面(重新载入用户资料数据),接口为NimUIKit.notifyUserInfoChanged(accounts);
- 返回用户默认头像资源 ID,当本地缓存不存在时,先显示默认头像
- 为通知栏提供用户头像(一般从本地缓存中取,若未下载或本地不存在,返回 null,通知栏将显示默认头像)
- 根据群 ID 返回群头像位图
> 注意:第三方 APP 的用户资料类需要实现 `UserInfo` 接口,接口中需要提供用户帐号,用户名(用户昵称),用户头像位图,默认头像资源ID。
在 demo 中,头像采用的圆形剪切绘制。开发者可调用 `HeadImageView#setMask` 修改头像形状,demo 中提供了 `nim_portrait_mask_round` 和 `nim_portrait_mask_square` 两种。
示例如下:
```
private UserInfoProvider infoProvider = new UserInfoProvider() {
@Override
public UserInfo getUserInfo(String account) {
// 先从本地缓存中获取
UserInfo user = NimUserInfoCache.getInstance().getUserInfo(account);
if (user == null) {
// 若缓存中没有,则发起异步请求数据,回调返回时调用NimUIKit.notifyUserInfoChanged(accounts);来通知UI更新
NimUserInfoCache.getInstance().getUserInfoFromRemote(account, null);
}
return user;
}
@Override
public int getDefaultIconResId() {
return R.drawable.avatar_def;
}
@Override
public Bitmap getAvatarForMessageNotifier(String account) {
UserInfo user = getUserInfo(account);
if (user != null && !TextUtils.isEmpty(user.getAvatar())) {
return ImageLoaderKit.getBitmapFromCache(user.getAvatar(), R.dimen.avatar_size_default, R.dimen.avatar_size_default);
}
return null;
}
@Override
public Bitmap getTeamIcon(String tid) {
Drawable drawable = getResources().getDrawable(R.drawable.avatar_group);
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable) drawable).getBitmap();
}
return null;
}
};
```
### <span id="设置通讯录提供者"> 设置通讯录提供者</span>
如果需要使用 UIKit 的通讯录功能(通讯录列表、联系人选择器),需要提供通讯录相关的数据源,需要实现 `ContactProvider` 并在 UIKit 初始化时设置:
- 返回本地所有好友用户信息
- 返回我的好友数量,提供给通讯录显示所有联系人数量使用
- 返回一个用户显示名(例如:如果有昵称显示昵称,如果没有显示帐号)
示例如下:
```
private ContactProvider contactProvider = new ContactProvider() {
@Override
public List<UserInfoProvider.UserInfo> getUserInfoOfMyFriends() {
List<NimUserInfo> nimUsers = NimUserInfoCache.getInstance().getUsersOfMyFriend();
List<UserInfoProvider.UserInfo> users = new ArrayList<>(nimUsers.size());
if (!nimUsers.isEmpty()) {
users.addAll(nimUsers);
}
return users;
}
@Override
public int getMyFriendsCount() {
return FriendDataCache.getInstance().getMyFriendCounts(); // 好友关系缓存
}
@Override
public String getUserDisplayName(String account) {
return NimUserInfoCache.getInstance().getUserDisplayName(account); // 用户资料缓存
}
};
```
## <span id="最近联系人列表"> 最近联系人列表</span>
### <span id="集成最近联系人列表"> 集成最近联系人列表</span>
下面演示集成最近联系人列表 `RecentContactsFragment`
```
public class SessionListFragment extends MainTabFragment {
private RecentContactsFragment contactsFragment;
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
addRecentContactsFragment();
}
// 将最近联系人列表fragment动态集成进来。开发者也可以使用在xml中配置的方式静态集成。
private void addRecentContactsFragment() {
contactsFragment = new RecentContactsFragment();
// 设置要集成联系人列表fragment的布局文件
contactsFragment.setContainerId(R.id.messages_fragment);
TActio
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
毕设&课设&项目&实训-基于健身的社交App,内含跑步轨迹绘制,数据可视化展示,即时通讯,看新闻等模块.zip (2000个子文件)
R.java 783KB
R.java 161KB
R.java 113KB
AddressData.java 92KB
R.java 92KB
R.java 75KB
PullToRefreshBase.java 45KB
ContentList.java 32KB
AVChatUI.java 31KB
R.java 28KB
R.java 27KB
R.java 27KB
RTSActivity.java 25KB
LogupActivity.java 25KB
UserProfileActivity.java 25KB
WheelView.java 23KB
OnlinePeopleFragment.java 23KB
WheelView.java 21KB
LoginActivity.java 21KB
PagerSlidingTabStrip.java 20KB
SessionHelper.java 19KB
AVChatActivity.java 18KB
RunningActivity.java 18KB
SystemMessageActivity.java 17KB
ChatRoomMsgListPanel.java 16KB
PullToRefreshAdapterViewBase.java 14KB
NimApplication.java 14KB
DoodleView.java 14KB
UserProfileEditItemActivity.java 13KB
BmiActivity.java 12KB
UserProfileSettingActivity.java 12KB
TestActivity.java 12KB
AVChatSurface.java 12KB
LoadingLayout.java 12KB
SettingsActivity.java 12KB
AVChatAudio.java 12KB
SessionListFragment.java 11KB
InfoListAdapter.java 11KB
AVChatVideo.java 11KB
SearchMessageActivity.java 10KB
PullToRefreshListView.java 10KB
MainActivity.java 10KB
ChatRoomMemberCache.java 10KB
CustomNotificationActivity.java 10KB
NimHttpClient.java 9KB
SettingsAdapter.java 9KB
ChartActivity.java 9KB
ChatRoomActivity.java 9KB
CircularRingPercentageView.java 8KB
IPullToRefresh.java 8KB
AbstractWheelTextAdapter.java 8KB
ContactListFragment.java 8KB
OverscrollHelper.java 8KB
BlackListActivity.java 8KB
HomeFragment.java 7KB
TeamCreateHelper.java 7KB
NoDisturbActivity.java 7KB
WheelScroller.java 7KB
MessageInfoActivity.java 7KB
CrashSnapshot.java 7KB
GlobalSearchActivity.java 7KB
WatchSnapChatPictureActivity.java 6KB
WheelMain.java 6KB
ChatRoomMessageFragment.java 6KB
ActionSheetDialog.java 6KB
ChatRoomHttpClient.java 6KB
TeamListActivity.java 6KB
UserPreferences.java 6KB
MyRunningActivity.java 6KB
MyAlertDialog.java 6KB
HomeFragment.java 6KB
R.java 6KB
R.java 5KB
DbAdapter.java 5KB
GroupHeadImageView.java 5KB
WelcomeActivity.java 5KB
TaskExecutor.java 5KB
PullToRefreshWebView.java 5KB
R.java 5KB
R.java 5KB
AVChatNotification.java 5KB
AdvancedTeamJoinActivity.java 5KB
MessageHelper.java 5KB
ChatRoomFragment.java 5KB
MasterFragment.java 5KB
IndicatorLayout.java 5KB
MsgViewHolderSnapChat.java 5KB
ContactHttpClient.java 5KB
SystemMessageViewHolder.java 5KB
FlipLoadingLayout.java 5KB
ManagedTask.java 5KB
SearchFragment.java 4KB
NewsList.java 4KB
SearchMessageAdapter.java 4KB
Task.java 4KB
RecordShowActivity.java 4KB
ChatRoomsFragment.java 4KB
FileBrowserActivity.java 4KB
PullToRefreshWebView2.java 4KB
SysInfoUtil.java 4KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功