tencent cloud

文档反馈

麦位布局

最后更新时间:2024-12-24 18:06:01
    本文档主要介绍 SeatGridView 如何自定义麦位布局。

    前提条件

    在使用 SeatGridView 前,您需要先 集成与登录 ,以便后续功能正常使用。

    使用指引

    步骤1:将 SeatGridView 添加到视图上

    您需要先导入 SeatGridView 模块,然后创建一个 SeatGridView 视图对象,并将其添加到自己的视图上。
    iOS
    Android
    import UIKit
    import RTCRoomEngine
    import SeatGridView
    
    class CustomizeSeatLayoutController: UIViewController {
    private let seatGridView: SeatGridView = {
    let view = SeatGridView()
    return view
    }()
    override func viewDidLoad() {
    super.viewDidLoad()
    // 将 seatGridView 添加到视图上,同时设置好布局约束
    }
    }
    import com.trtc.uikit.livekit.seatGridView.SeatGridView;
    
    public class CustomizeSeatLayoutActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SeatGridView seatGridView = new SeatGridView(this);
    addContentView(seatGridView,
    new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    }
    }

    步骤2:准备麦位布局参数

    在调用 setLayoutMode 接口时需要填写关键参数 layoutModelayoutJson ,接下来进行详细介绍:

    参数一:layoutMode

    layoutMode 是一个 SGLayoutMode 类型的枚举。
    枚举值类型
    含义
    补充说明
    focus
    中心布局
    (如1、3、3布局,第一行1个元素,第二行和第三方各3个元素)
    内置布局样式
    grid
    宫格布局
    内置布局样式(此为默认样式)
    vertical
    垂直布局
    内置布局样式
    free
    自由布局
    自定义布局样式
    说明:
    使用 seatGridView 的内置布局样式时无需提供额外的 SGSeatViewLayoutConfig 参数,setLayoutMode 只需要传入 SGLaoutMode 参数即可。

    参数二:layoutConfig

    layoutConfig是一个SGSeatViewLayoutConfig 类型的结构体,由于 rowConfigsrowSpacing 两个字段构成。
    参数名称
    字段含义
    数据类型
    rowConfigs
    用于存储每行麦位布局的配置。
    SGSeatViewLayoutRowConfig 类型的数组
    rowSpacing
    用于存储麦位布局的行间距
    浮点数
    SGSeatViewLayoutRowConfigcountseatSpacingseatSizealignment 四个字段构成。
    参数名称
    字段含义
    数据类型
    count
    每一行的麦位数
    整数
    seatSpacing
    同一行麦位的竖直间距
    浮点数
    seatSize
    麦位的大小
    Size类型
    alignment
    同一行的麦位排列方式
    SGSeatViewLayoutRowAlignment
    SGSeatViewLayoutRowAlignment 是一个枚举。
    枚举值类型
    含义
    spaceAround
    分散对齐,不靠着容器壁,剩余空间在每个项目两侧平均分配
    spaceBetween
    间隔对齐,最左、最右item贴合左侧或右侧边框,item与item之间间距相等。
    spaceEvenly
    平均对齐,不靠着容器壁,剩余空间平分
    start
    居左对齐
    end
    居右对齐
    center
    居中对齐

    步骤3:设置麦位布局

    在准备好步骤2中的参数 layoutMode 和 和 layoutConfig,就可以调用 setLayoutMode 接口函数设置麦位布局了。

    内置布局:

    使用内置布局时只需要传入 layoutMode一个 参数即可。
    iOS
    Android
    // 中心布局
    self.seatGridView.setLayoutMode(layoutMode: .focus)
    // 宫格布局
    self.seatGridView.setLayoutMode(layoutMode: .grid)
    // 垂直布局
    self.seatGridView.setLayoutMode(layoutMode: .vertical)
    // 中心布局
    seatGridView.setLayoutMode(VoiceRoomDefine.LayoutMode.FOCUS, null);
    // 宫格布局
    seatGridView.setLayoutMode(VoiceRoomDefine.LayoutMode.GRID, null);
    // 垂直布局
    seatGridView.setLayoutMode(VoiceRoomDefine.LayoutMode.VERTICAL, null);

    自定义布局:

    使用自定义布局时,layoutMode 的值应为 free 且需要传入对应的麦位布局配置参数 layoutConfig
    以自定义一个2、1、2的布局,每行的排列分别是spaceBetween、center和spaceBetween为例:
    iOS
    Android
    // 创建每一行的麦位配置
    let firstRowConfig = SGSeatViewLayoutRowConfig(count: 2,
    seatSpacing: 10.0, seatSize: CGSize(width: 50, height: 50), alignment: .spaceBetween)
    let secondRowConfig = SGSeatViewLayoutRowConfig(count: 1,
    seatSpacing: 10.0, seatSize: CGSize(width: 72, height: 72), alignment: .center)
    let thirdRowConfig = SGSeatViewLayoutRowConfig(count: 2,
    seatSpacing: 10.0, seatSize: CGSize(width: 50, height: 50), alignment: .spaceBetween)
    let rowConfigs: [SGSeatViewLayoutRowConfig] = [firstRowConfig, secondRowConfig, thirdRowConfig]
    let layoutConfig = SGSeatViewLayoutConfig(rowConfigs: rowConfigs, rowSpacing: 20.0)
    
    // 设置布局模式
    self.seatGridView.setLayoutMode(layoutMode: .free, layoutConfig: layoutConfig)
    // 创建每一行的麦位配置
    VoiceRoomDefine.SeatViewLayoutRowConfig firstRowConfig = new VoiceRoomDefine.SeatViewLayoutRowConfig();
    firstRowConfig.count = 2;
    firstRowConfig.seatSpacing = 10;
    firstRowConfig.seatSize = new VoiceRoomDefine.Size(50,50);
    firstRowConfig.alignment = SPACE_BETWEEN;
    
    VoiceRoomDefine.SeatViewLayoutRowConfig secondRowConfig = new VoiceRoomDefine.SeatViewLayoutRowConfig();
    secondRowConfig.count = 1;
    secondRowConfig.seatSpacing = 10;
    secondRowConfig.seatSize = new VoiceRoomDefine.Size(72,72);
    secondRowConfig.alignment = CENTER;
    
    VoiceRoomDefine.SeatViewLayoutRowConfig thirdRowConfig = new VoiceRoomDefine.SeatViewLayoutRowConfig();
    thirdRowConfig.count = 2;
    thirdRowConfig.seatSpacing = 10;
    thirdRowConfig.seatSize = new VoiceRoomDefine.Size(50,50);
    thirdRowConfig.alignment = SPACE_BETWEEN;
    
    List<VoiceRoomDefine.SeatViewLayoutRowConfig> rowConfigs = new ArrayList<>();
    rowConfigs.add(firstRowConfig);
    rowConfigs.add(secondRowConfig);
    rowConfigs.add(thirdRowConfig);
    VoiceRoomDefine.SeatViewLayoutConfig config = new VoiceRoomDefine.SeatViewLayoutConfig();
    config.rowConfigs = rowConfigs;
    config.rowSpacing = 20;
    
    // 设置布局模式
    seatGridView.setLayoutMode(LayoutMode.FREE, config);
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持