本文档将指导您如何在
Android 项目中快速对 TUILiveKit 的直播送礼组件进行自定义。组件概述
TUILiveKit 的礼物功能主要由以下三个核心视图组件构成:组件名称 | 类名 | 功能描述 |
礼物列表 | GiftListView | 展示礼物列表,处理用户的点击选择和发送事件。 |
礼物播放组件 | GiftPlayView | 负责接收礼物消息,并在屏幕上渲染对应的动画特效(例如 SVGA 动画)。 |
效果演示
礼物面板 | 弹幕礼物 | 全屏礼物 |
![]() | ![]() | ![]() |
快速开始
步骤1:开通服务
说明:
步骤2:代码集成
工程配置:请参考 准备工作 完成
TUILiveKit 接入。版本限制:
TUILiveKit >= 3.2.0。步骤3:接入礼物列表
GiftListView 通常以弹窗或底部面板的形式展示。您也可以将其添加到 Activity 或 Fragment 的布局中。import android.os.Bundleimport android.widget.FrameLayoutimport androidx.appcompat.app.AppCompatActivityimport com.trtc.uikit.livekit.Rimport com.trtc.uikit.livekit.component.gift.GiftListViewclass YourLiveActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_live_room)// 获取页面的根布局容器val rootView = findViewById<FrameLayout>(R.id.root_view)// 1. 创建礼物列表组件实例val giftListView = GiftListView(this)// 2. 初始化组件,传入当前的房间 ID (RoomId)// 注意:请确保此时已获取到有效的 roomIdgiftListView.init("your_room_id")// 3. 将组件添加到视图层级中rootView.addView(giftListView)}}
步骤4:接入礼物特效播放组件
GiftPlayView 是一个透明的覆盖层,用于播放礼物动画。它通常覆盖在视频画面的上方,但位于交互按钮的下方。import android.os.Bundleimport android.widget.FrameLayoutimport androidx.appcompat.app.AppCompatActivityimport com.trtc.uikit.livekit.Rimport com.trtc.uikit.livekit.component.gift.GiftPlayViewclass YourLiveActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_live_room)val rootView = findViewById<FrameLayout>(R.id.root_view)// 1. 创建礼物播放组件实例val giftPlayView = GiftPlayView(this)// 2. 初始化组件,传入当前的房间 ID// 组件内部会自动监听该房间的礼物消息并触发播放giftPlayView.init("your_room_id")// 3. 将组件添加到视图层级中// 建议将此 View 添加到视频层之上,UI 控件层之下rootView.addView(giftPlayView)}}
调整礼物面板样式
TUILiveKit 的礼物组件设计为高度可定制。您可以通过继承核心组件并覆写关键方法,或提供自定义的布局文件来实现 UI 的完全适配。代码结构

自定义礼物列表项
GiftListView 内部使用 GiftPanelAdapter 来展示每个礼物。您可以通过以下方式自定义礼物的外观。步骤:
1. 创建自定义礼物项布局:设计您的礼物项
UI(例如图标、名称、价格标签的样式和位置)。2. 修改
GiftPanelAdapter:通过自定义 ViewHolder 并覆写 onBindViewHolder 方法,使用您的数据绑定逻辑来更新自定义布局。示例代码:
class GiftPanelAdapter(private val pageIndex: Int,private val giftModelList: MutableList<Gift>,private val context: Context) : RecyclerView.Adapter<GiftPanelAdapter.CustomViewHolder?>() {override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomViewHolder {// 自定义您的 item viewval view = LayoutInflater.from(context).inflate(R.layout.custom_gift_layout_panel_recycle_item, parent, false)return CustomViewHolder(view)}override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {// viewHolder 绑定数据}override fun getItemCount(): Int {return giftModelList.size}class CustomViewHolder(view: View) : RecyclerView.ViewHolder(view) {// 声明自定义布局中的视图}}
下一步
自定义礼物配置:通过服务端
API 上传您自己的礼物图标、动画文件,并设置价格。礼物扣费回调:配置回调地址,将送礼请求转发至您的计费后台,实现“余额校验”与“扣费”闭环。
PK 分数联动:在主播
PK 场景下,将礼物价值实时转换为 PK 分数。数据统计:获取礼物发送记录、总价值等运营数据。
升级礼物动画特效 SDK:如果
SVGA 无法满足需求,可集成高级播放器支持 MP4/PAG 等高清透明动画。

