保利威文档中心

幫助中心

5_3-手机开播场景-PPT白板

更新時間:2023-04-17 15:27:57

1 功能概述

文件(PPT 與白板)模組包含白板、PPT 展示、畫筆標註等功能。文件模組的整個介面被封裝在 PLVLSDocumentLayout 中。

2 使用演示

使用文件模組只需在 Activity 的佈局中加入 PLVLSDocumentLayout 佈局,並呼叫其初始化方法即可。

// PLVLSLiveStreamerActivity.java
private void initView() {
    // 文档布局
    plvlsDocumentLy = (IPLVLSDocumentLayout) findViewById(R.id.plvls_document_ly);
    // 初始化文档布局,传入初始化所需的参数
    plvlsDocumentLy.init(liveRoomDataManager);
}

同時,也可以設定佈局的監聽回呼,以便在不同模組佈局之間進行通訊。

// IPLVLSDocumentLayout 设置监听器方法定义
/**
 * 设置标注工具栏 折起/展开 回调
 */
void setMarkToolOnFoldExpandListener(PLVLSDocumentControllerExpandMenu.OnFoldExpandListener onFoldExpandListener);

/**
 * 设置文档布局区域 全屏/正常 回调
 */
void setOnSwitchFullScreenListener(PLVLSDocumentControllerLayout.OnSwitchFullScreenListener onSwitchFullScreenListener);

3 實作介紹

3.1 PLVLSDocumentLayout

文件佈局是一個 ViewGroup,主要由一個負責顯示白板 PPT 的 WebView - PLVSDocumentWebView,以及一個疊加在 WebView 上方負責控制標註畫筆等功能的功能列 - PLVLSDocumentControllerLayout 所構成。

@Override
public void init(IPLVLiveRoomDataManager liveRoomDataManager) {
    // 初始化文档WebView
    initDocumentWebView();
    // 初始化 MVP - Presenter
    initPresenter();
    // 初始化文档控制栏
    initDocumentController();
}

3.2 PLVLSDocumentControllerLayout

功能列是一個皮膚佈局,包含標註工具、切換文件全螢幕、新增白板、切換文件上下頁等功能。它不會直接操作白板 PPT 的 WebView,而是透過呼叫 Presenter 提供的相關方法,再由 Presenter 對文件 WebView 狀態進行修改。以下程式碼展示當使用者點擊箭頭標註工具時,如何告知 WebView 切換到箭頭標註狀態。

// PLVLSDocumentControllerLayout.java
// 箭头工具点击监听
plvlsDocumentMarkToolArrowIv.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        keepControllerVisible();
        setColorSelectorVisibility(VISIBLE);
        changeMarkToolSelectedType(v);
        // 通过回调让PLVLSDocumentLayout来执行切换
        callbackMarkToolType(PLVMarkToolType.ARROW);
        plvlsDocumentMarkMenu.requestLayout();
    }
});

// PLVLSDocumentLayout.java
// 文档布局中设置,控制栏选择标注工具时回调监听
plvlsDocumentControllerLayout.setOnChangeMarkToolListener(new PLVLSDocumentControllerLayout.OnChangeMarkToolListener() {
    @Override
    public void onChangeMarkTool(@PLVMarkToolType.Range final String markToolType) {
        if (PLVMarkToolType.CLEAR.equals(markToolType)) {
            // 清屏时的处理逻辑
        } else {
            // 其他标注工具的处理逻辑,让Presenter通知WebView变更标注工具
            documentPresenter.changeMarkToolType(markToolType);
        }
    }
});
联系客服,在线咨询