礼物系统 (Android Kotlin)

最近更新时间:2026-02-10 10:20:21

我的收藏
本文档将指导您如何在 Android 项目中快速对 TUILiveKit 的直播送礼组件进行自定义。

组件概述

TUILiveKit 的礼物功能主要由以下三个核心视图组件构成:
组件名称
类名
功能描述
礼物列表
GiftListView
展示礼物列表,处理用户的点击选择和发送事件。
礼物播放组件
GiftPlayView
负责接收礼物消息,并在屏幕上渲染对应的动画特效(例如 SVGA 动画)。

效果演示

礼物面板
弹幕礼物
全屏礼物










快速开始

步骤1:开通服务

请参考 开通服务,领取 TUILiveKit 体验版或者开通付费版。
说明:
使用礼物系统要求开通 TUILiveKit 体验版、多人连麦版或大规模直播版,不同套餐中可配置的礼物数量有所不同,详细参见 功能与计费说明 中的礼物系统说明,您可按需选购。

步骤2:代码集成

工程配置:请参考 准备工作 完成 TUILiveKit 接入。
版本限制TUILiveKit >= 3.2.0。

步骤3:接入礼物列表

GiftListView 通常以弹窗或底部面板的形式展示。您也可以将其添加到 ActivityFragment 的布局中。
import android.os.Bundle
import android.widget.FrameLayout
import androidx.appcompat.app.AppCompatActivity
import com.trtc.uikit.livekit.R
import com.trtc.uikit.livekit.component.gift.GiftListView

class 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)
// 注意:请确保此时已获取到有效的 roomId
giftListView.init("your_room_id")

// 3. 将组件添加到视图层级中
rootView.addView(giftListView)
}
}

步骤4:接入礼物特效播放组件

GiftPlayView 是一个透明的覆盖层,用于播放礼物动画。它通常覆盖在视频画面的上方,但位于交互按钮的下方。
import android.os.Bundle
import android.widget.FrameLayout
import androidx.appcompat.app.AppCompatActivity
import com.trtc.uikit.livekit.R
import com.trtc.uikit.livekit.component.gift.GiftPlayView

class 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 view
val 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) {
// 声明自定义布局中的视图
}
}

下一步

完成上述 UI 集成后,您已经实现了客户端的礼物展示能力。为了构建一个完整的商业化礼物功能,您还需要参考 礼物系统后端对接与进阶功能 文档,完成以下核心业务逻辑的对接:
自定义礼物配置:通过服务端 API 上传您自己的礼物图标、动画文件,并设置价格。
礼物扣费回调:配置回调地址,将送礼请求转发至您的计费后台,实现“余额校验”与“扣费”闭环。
PK 分数联动:在主播 PK 场景下,将礼物价值实时转换为 PK 分数。
数据统计:获取礼物发送记录、总价值等运营数据。
升级礼物动画特效 SDK:如果 SVGA 无法满足需求,可集成高级播放器支持 MP4/PAG 等高清透明动画。