跳到主要内容

提示

此功能在 5.12.0 版本开始支持。

群组页面

群组相关页面包含选择联系人、创建群组、群组设置、群成员列表等功能。

开通服务

在使用此功能前,您需要在控制台开通信息托管服务。

激活信息托管服务

选择/添加联系人页面

选择或添加联系人页面默认显示的是信息托管服务上当前用户的好友列表。

选择联系人页面用于从好友列表中选择好友。用户可以在该页面选择多个好友,用于创建群组、发送邀请等操作。以下是 FriendSelect 页面相关组件的详细说明:

  • FriendSelectActivity: 好友选择页面的容器类,负责加载并显示 FriendSelectFragment
  • FriendSelectFragment: 好友选择页面的核心部分,负责展示好友选择列表、搜索框等 UI 元素,并处理用户选择好友的操作。
  • FriendSelectViewModel: 数据和业务逻辑的处理类,负责获取好友列表数据、处理用户选择的好友,并将数据传递给 FriendSelectFragment
  • XML布局: rc_page_friend_select.xml

启动选择联系人页面、配置单次可选择的最大人数

默认能选择的最大人数为 30,配置值需大于 0,小于等于 30.

   int maxCount = 30;
startActivity(FriendSelectActivity.newIntent(this, maxCount));

详见 用户托管页面设计 的自定义Fragment

拦截选择完成回调

// 自定义CustomFriendSelectFragment
public class CustomFriendSelectFragment extends FriendListFragment {

@Override
protected void onViewReady(@NonNull FriendSelectViewModel viewModel) {
super.onViewReady(viewModel);
// 可以重写确认点击事件
headComponent.setRightClickListener(
v -> {
// 选择的联系人
List<ContactModel> value = viewModel.getSelectedContactsLiveData().getValue();
if (value == null || value.isEmpty()) {
return;
}
List<String> inviteeUserIds = new ArrayList<>();
for (int i = 0; i < value.size(); i++) {
Object bean = value.get(i).getBean();
if (bean instanceof FriendInfo) {
inviteeUserIds.add(((FriendInfo) bean).getUserId());
}
}
startActivity(GroupCreateActivity.newIntent(getContext(), inviteeUserIds));
});
}
}

创建群组页面

创建群组页面用于创建新的群组,提供输入群组名称、选择群组成员以及创建群组的功能。以下是创建群组页面相关组件的详细说明:

  • GroupCreateActivity: 创建群组页面的容器类,负责加载并显示 GroupCreateFragment
  • GroupCreateFragment: 创建群组页面的核心部分,负责展示群组名称输入框、群组头像,并处理群组创建的用户交互事件。
  • GroupCreateViewModel: 数据和业务逻辑处理类,负责创建群组操作,并将群组创建结果传递给 GroupCreateFragment
  • XML布局: rc_page_group_create.xml

启动创建群组页面

  List<String> inviteeUserIds = new ArrayList<>();
String groupId = "groupId";
startActivity(GroupCreateActivity.newIntent(getContext(), groupId, inviteeUserIds));

自定义头像点击事件

// 自定义CustomGroupCreateFragment
public class CustomGroupCreateFragment extends GroupCreateFragment {

@Override
protected void onViewReady(@NonNull GroupCreateViewModel viewModel) {
super.onViewReady(viewModel);
// 自定义头像点击事件
ivGroupIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

}
});
}
}

群组详情页面

群组详情页面用于展示和管理群组的基本信息,提供查看群组成员、编辑群组资料、添加或删除群成员、解散或退出群组等功能:

  • GroupProfileActivity: 群组详情页面的容器类,负责加载并显示 GroupProfileFragment
  • GroupProfileFragment: 群组详情页面的核心部分,负责展示群组信息、群成员列表,并处理相关的用户交互事件。
  • GroupProfileViewModel: 数据和业务逻辑处理类,负责从服务器或本地获取群组和群成员的相关数据,并将数据传递给 GroupProfileFragment
  • XML布局: rc_page_group_profile.xml

配置群组设置页展示的群成员数

  // 最多显示群成员个数,默认为 30, 设置 displayMaxMemberCount 需要不小于 5 个,不大于 50
int displayMaxMemberCount = 30;
startActivity(GroupProfileActivity.newIntent(this, conversationIdentifier, displayMaxMemberCount));
// 自定义CustomGroupProfileFragment
public class CustomGroupProfileFragment extends GroupProfileFragment {

@Override
protected void onViewReady(@NonNull GroupProfileViewModel viewModel) {
super.onViewReady(viewModel);
// 处理添加/删除成员的点击事件
groupMembersAdapter.setOnGroupActionListener(
new GroupMembersAdapter.OnGroupActionListener() {
@Override
public void addMemberClick() {
// 处理添加成员的逻辑

}

@Override
public void removeMemberClick() {
// 处理删除成员的逻辑

}
}

@Override
public void onGroupClicked(GroupMemberInfo groupMemberInfo) {
// 处理成员点击的逻辑
}
});
}
}

群成员列表页面

群成员列表页面用于展示群组内的所有成员,并提供搜索和点击查看成员详情的功能。开发者可以在该页面执行以下操作:

  • 查看群组成员列表
  • 搜索特定成员
  • 点击查看成员详情

组件说明如下:

  • GroupMemberListActivity: 群组成员列表页面的容器类,负责加载并显示 GroupMemberListFragment
  • GroupMemberListFragment: 群组成员列表页面的核心部分,负责展示群组成员列表、搜索框等 UI 元素,并处理相关的用户交互事件。
  • GroupMemberListViewModel: 数据和业务逻辑处理类,负责从服务器或本地获取群组成员信息,并将数据传递给 GroupMemberListFragment
  • XML布局: rc_page_group_member_list.xml

启动群成员列表页面、配置每页加载群成员数

  // 每页加载成员数, 默认 50,0 < pageCount <= 100
int displayMaxMemberCount = 50;
startActivity(GroupMemberListActivity.newIntent(
getContext(), conversationIdentifier, displayMaxMemberCount))

添加群成员页面

添加群成员页面用于在群组中添加新成员,提供查看联系人列表、选择联系人并邀请加入群组的功能。组件说明如下:

  • AddGroupMembersActivity: 添加群成员页面的容器类,负责加载并显示 AddGroupMembersFragment,管理页面跳转和传递必要的参数。
  • AddGroupMembersFragment: 添加群成员页面的核心部分,负责展示联系人列表、搜索联系人,并处理邀请联系人加入群组的用户交互事件。通过 AddGroupMembersViewModel 获取数据并更新视图。
  • AddGroupMembersViewModel: 数据和业务逻辑处理类,负责从服务器或本地获取联系人列表、群成员信息,并将数据传递给 AddGroupMembersFragment,处理选择联系人、过滤联系人、邀请联系人加入群组等逻辑。
  • XML布局: rc_page_group_add_member.xml

启动添加群成员页面、配置单次可选择的最大人数

默认能选择的最大人数为 30,配置值需大于 0,小于等于 30.

   int maxCount = 30;
ConversationIdentifier conversationIdentifier = getConversationIdentifier();
startActivity(AddGroupMembersActivity.newIntent(this, conversationIdentifier, maxCount));

移除群成员页面

移除群成员页面用于在群组中移除成员,提供查看联系人列表、选择联系人并执行移除操作的功能。组件说明如下:

  • RemoveGroupMembersActivity: 移除群成员页面的容器类,负责加载并显示 RemoveGroupMembersFragment,管理页面跳转和传递必要的参数。
  • RemoveGroupMembersFragment: 移除群成员页面的核心部分,负责展示联系人列表、搜索联系人,并处理移除群成员的用户交互事件。通过 RemoveGroupMembersViewModel 获取数据并更新视图。
  • RemoveGroupMembersViewModel: 数据和业务逻辑处理类,负责从服务器或本地获取联系人列表、群成员信息,并将数据传递给 RemoveGroupMembersFragment,处理选择联系人、过滤联系人、移除联系人等逻辑。
  • XML布局: rc_page_group_remove_member.xml

启动移除群成员页面

   ConversationIdentifier conversationIdentifier = getConversationIdentifier();
GroupMemberRole role = GroupMemberRole;
startActivity(RemoveGroupMembersActivity.newIntent(this, conversationIdentifier, role));