视频会议(原会议组件)
自定义菜单
更新时间: 2022/10/12 13:51:00
网易会议组件 NEMeetingKit 为您提供了一套会议中自定义菜单的接口,允许您对会议中的菜单进行更个性化的定制。
功能介绍
NEMeetingKit 支持底部 Toolbar 菜单与更多展开菜单两个区域的菜单定制,包括:
- 支持设置菜单项图标。
- 支持自定义 SDK 内置菜单与外部注入菜单的排序。
- 支持设置菜单显示规则,包括:始终可见、仅普通参会者可见、仅主持人可见。
- 支持无状态菜单项和有状态菜单项,且支持点击有状态的菜单项后触发状态迁移,并更新菜单的 UI 展示。
- 支持显示或隐藏 SDK 的内置菜单。
- 支持修改 SDK 内置菜单的 UI 展示。
注意事项
自定义菜单时,您需要通过 options
参数进行配置,但此参数仅支持在入会前完成设置,在会议中设置不会生效。
配置 Toolbar 菜单列表
在创建会议、加入会议或匿名入会时,设置 options
相关参数。
private void configToolbarMenus(NEMeetingOptions options) {
//1. 创建Toolbar菜单列表构建类,列表默认包含:"音频"、"视频"、"屏幕共享"、"参会者"、"管理参会者"
NEMenuItemListBuilder toolbarMenuBuilder = NEMenuItemListBuilder.toolbarMenuBuilder();
//2. 不显示SDK内置"音频"菜单
toolbarMenuBuilder.removeMenuById(NEMenuIDs.MIC_MENU_ID);
//3. 修改"视频"菜单
NEMeetingMenuItem sdkCameraMenu = toolbarMenuBuilder.getMenuById(NEMenuIDs.CAMERA_MENU_ID);
//3.1 修改菜单可见性为"仅主持人可见"
sdkCameraMenu.setVisibility(NEMenuVisibility.VISIBLE_TO_HOST_ONLY);
//3.2 修改菜单未选中状态下的图标
if (sdkCameraMenu instanceof NECheckableMenuItem) {
((NECheckableMenuItem) sdkCameraMenu).getUncheckStateItem().setIcon(R.drawable.icon);
}
//4. 在列表第2个位置添加一个单状态菜单
toolbarMenuBuilder.addMenu(1,
new NESingleStateMenuItem(100, NEMenuVisibility.VISIBLE_ALWAYS,
new NEMenuItemInfo("菜单名称", R.drawable.icon))
);
//5. 配置完成,设置参数字段
options.fullToolbarMenuItems = toolbarMenuBuilder.build();
}
配置更多展开菜单列表
-
在创建会议、加入会议或匿名入会时,设置
options
相关参数。private void configMoreMenus(NEMeetingOptions options) { //1. 创建更多菜单列表构建类,列表默认包含:"邀请"、"聊天" NEMenuItemListBuilder moreMenuBuilder = NEMenuItemListBuilder.moreMenuBuilder(); //2. 添加一个多选菜单项 moreMenuBuilder.addMenu(new NECheckableMenuItem( 100, NEMenuVisibility.VISIBLE_ALWAYS, new NEMenuItemInfo("菜单-未选中", R.drawable.icon), new NEMenuItemInfo("菜单-选中", R.drawable.icon) ) ); //3. 配置完成,设置参数字段 options.fullMoreMenuItems = moreMenuBuilder.build(); }
-
注册回调接口
setupMenuClickListener
开始监听,并在回调方法中处理相应事件。// 监听"菜单点击",只需设置一次即可,不用每次入会都进行设置 private void setupMenuClickListener() { NEMeetingKit.getInstance().getMeetingService() .setOnInjectedMenuItemClickListener(new NEMeetingOnInjectedMenuItemClickListener() { @Override public void onInjectedMenuItemClick(Context context, NEMenuClickInfo clickInfo, NEMeetingInfo meetingInfo, NEMenuStateController stateController) { //1. 获取被点击菜单项ID final int id = clickInfo.getItemId(); //2. 如果是多状态菜单,获取被点击时的状态 if (clickInfo instanceof NEStatefulMenuClickInfo) { // 菜单项点击时的选中状态 final boolean isChecked = ((NEStatefulMenuClickInfo) clickInfo).isChecked(); // 3. 控制菜单项的状态迁移 final boolean needTransition = conditionCheck(); stateController.didStateTransition(needTransition, null); } } }); }
相关参考
API 参考
网易会议 NEMeetingKit Android 端的自定义菜单相关类与接口主要位于 com.netease.meetinglib.sdk.menu
包内,其中对关键类、接口和字段的介绍如下。
自定义菜单项相关
类/接口 | 描述 |
---|---|
NEMenuVisibility | 菜单项可见性的枚举值。 |
NEMenuItemInfo | 自定义菜单项的 UI 展示。自定义一个标题与图标。 |
NEMeetingMenuItem | 菜单项抽象基类。自定义菜单 ID 与菜单可见性,无法实例化。 |
NESingleStateMenuItem | 单状态菜单项实现类。此类菜单始终展示相同的标题与图标。 |
NECheckableMenuItem | 双状态菜单项实现类。此类菜单包括选中和非选中两个状态,点击后可切换状态,并展示与当前状态对应的 UI。 |
监听点击菜单项操作相关
类/接口 | 描述 |
---|---|
NEMenuClickInfo | 点击单状态菜单项时的描述信息。只包含菜单 ID。 |
NEStatefulMenuClickInfo | 点击多状态菜单项时的描述信息。包含菜单 ID 与点击菜单时的菜单状态。 |
NEMenuStateController | 菜单项状态迁移控制器接口。可控制是否进行菜单项的状态迁移。 |
NEMeetingOnInjectedMenuItemClickListener | 菜单项点击事件监听回调。该回调仅在点击注入菜单项时返回。 |
菜单项帮助相关
类 | 描述 |
---|---|
NEMenuIDs | 定义 SDK 内置菜单的 ID。 |
NEMenuItems | 获取 SDK 内置菜单项的实例。 |
NEMenuItemListBuilder | 菜单列表构建帮助类。 |
菜单项注入相关
字段 | 说明 |
---|---|
NEMeetingOptions#fullToolbarMenuItems | 配置会议中Toolbar菜单的完整列表。 |
NEMeetingOptions#fullMoreMenuItems | 配置会议中更多展开菜单的完整列表。 |
菜单图标规格说明
添加自定义菜单项时,需要指定一个标准 png 或 jpg 格式的图标资源。请将对应资源放置在 drawable
目录下,并在创建菜单项时使用对应的资源 ID(如 R.drawable.icon
作为参数。
图标尺寸规格如下:
dpi | 图标尺寸 |
---|---|
mdpi | 24px*24px |
xhdpi | 48px*48px |
SDK 内置菜单项
NEMeetingKit 目前内置了以下菜单项,您可根据需要调整内置菜单项的位置、标题、图标和可见性。
菜单项 |
菜单 ID |
菜单项实例对象 |
类型 |
是否允许在Toolbar菜单中显示 |
是否允许在更多展开菜单中显示 |
---|---|---|---|---|---|
音频 | NEMenuIDs#MIC_MENU_ID |
NEMenuItems#micMenu() |
NECheckableMenuItem | 是 | 否 |
视频 | NEMenuIDs#CAMERA_MENU_ID |
NEMenuItems#cameraMenu() |
NECheckableMenuItem | 是 | 否 |
屏幕共享 | NEMenuIDs#SCREEN_SHARE_MENU_ID |
NEMenuItems#screenShareMenu() |
NECheckableMenuItem | 是 | 是 |
参会者 | NEMenuIDs#PARTICIPANTS_MENU_ID |
NEMenuItems#participantsMenu() |
NESingleStateMenuItem | 是 | 否 |
管理参会者 | NEMenuIDs#MANAGE_PARTICIPANTS_MENU_ID |
NEMenuItems#managerParticipantsMenu() |
NESingleStateMenuItem | 是 | 否 |
邀请 | NEMenuIDs#INVITE_MENU_ID |
NEMenuItems#inviteMenu() |
NESingleStateMenuItem | 是 | 是 |
聊天 | NEMenuIDs#CHAT_MENU_ID |
NEMenuItems#chatMenu() |
NESingleStateMenuItem | 是 | 是 |
白板 | NEMenuIDs#WHITEBOARD_ID |
NEMenuItems#whiteBoardShareMenu() |
NECheckableMenuItem | 否 | 是 |
此文档是否对你有帮助?
有帮助
我要吐槽