4_3-带货场景-聊天室
更新時間:2023-04-17 15:27:57
1 功能概述
聊天室模組包含發言、按讚、歷史記錄、歡迎語等功能。聊天室模組在 UI、互動、功能上,相較於其他模組,會更複雜且更龐大。因此設計、搭建、維護一個聊天室,也是一件較為耗時費力的事情。我們推薦直接使用保利威封裝好的聊天室模組,該部分程式碼完全開源,支援直接使用以及二次開發。
2 使用演示
聊天室在帶貨場景分為直播首頁PLVECLiveHomeFragment的聊天室和回放首頁PLVECPalybackHomeFragment中的聊天室。
聊天室遵循MVP模式,因此方法之間的呼叫非常簡單明瞭,在View中可以自由選擇感興趣的聊天室事件進行監聽,並呼叫Presenter相關方法進行聊天室的操作。
以回放聊天室監聽公告事件為例,程式碼如下:
// PLVECPalybackHomeFragment.java
private IPLVChatroomContract.IChatroomView chatroomView = new PLVAbsChatroomView() {
// 实现了接受公告事件的接口方法,监听公告事件
@Override
public void onBulletinEvent(@NonNull PolyvBulletinVO bulletinVO) {
super.onBulletinEvent(bulletinVO);
// 在acceptBulletinMessage方法中处理监听接受到的公告事件,显示到界面当中
acceptBulletinMessage(bulletinVO);
}
// 实现了接受移除公告事件的方法,监听移除公告事件
@Override
public void onRemoveBulletinEvent() {
super.onRemoveBulletinEvent();
// 移除界面中的公告
removeBulletin();
}
};
3 實作介紹
3.1 回放 - PLVECPalybackHomeFragment
帶貨場景下的回放聊天室,用於顯示公告的更新。該類別和聊天室 mvp-presenter 的通訊,是透過該類別中定義的聊天室 mvp-view,當呼叫聊天室 mvp-presneter 的 registerView 方法後,聊天室 mvp-presneter 即可通知聊天室 mvp-view 的更新,同時聊天室 mvp-view 也能呼叫聊天室 mvp-presenter 的方法。定義聊天室 mvp-view 的範例程式碼:
// 聊天室presenter(定义在父类PLVECCommonHomeFragment当中)
protected IPLVChatroomContract.IChatroomPresenter chatroomPresenter;
// PLVECLiveHomeFragment.java
// 聊天室mvp-view
private IPLVChatroomContract.IChatroomView chatroomView = new PLVAbsChatroomView() {
// 聊天室需要监听事件的抽象方法实现...
}
// 注册mvp-view
@Override
protected void registerChatroomView() {
chatroomPresenter.registerView(chatroomView);
//设置信息索引,需在chatroomPresenter.registerView后设置
chatMessageAdapter.setMsgIndex(chatroomPresenter.getViewIndex(chatroomView));
}
3.2 直播 - PLVECLiveHomeFragment
帶貨場景下的直播聊天室,包含聊天資訊列表、傳送資訊輸入框、按讚佈局、歡迎語、公告等元素。mvp-view 和 mvp-presenter 之間的建構邏輯與回放相似,在直播聊天室中包含了更多直播情境所需監聽的聊天室事件用例,詳情請參考 demo 中PLVECLiveHomeFragment的聊天室相關程式碼區塊。
