# 云信 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
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
资源推荐
资源详情
资源评论
收起资源包目录
一个基于健身的社交App,内含跑步轨迹绘制,数据可视化展示,即时通讯,看新闻等模块(毕设&课设&实训&大作业&竞赛&项目) (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
资源评论
专家大圣
- 粉丝: 2110
- 资源: 7863
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功