文档中心>TRTC 云助手>模块化方案>视频渲染控件样式布局

视频渲染控件样式布局

最近更新时间:2024-07-24 16:21:42

我的收藏
音视频场景会高频使用到视频渲染控件,例如直播播放、点播播放、本地摄像头预览等。为了更加美观,我们可以为视频渲染控件设置个性化的样式布局,例如阴影和圆角效果。下面我们将分别介绍 Android 平台 以及 iOS 平台 的视频渲染控件样式布局实现方式。

Android 平台

腾讯云实时音视频、直播点播播放器等产品均会涉及到视频渲染控件的使用。在 Android 平台,通常使用腾讯云自定义的视频渲染控件 TXCloudVideoView。该控件本身不支持直接设置阴影、圆角等效果,因此我们通常会借助 CardView 视图组件来实现个性化的样式布局,实现步骤如下。

步骤一:添加依赖

在 build.gradle 文件中添加 CardView 的依赖。
dependencies {
implementation 'androidx.cardview:cardview:1.0.0'
}

步骤二:自定义 CardView

在 XML 布局文件中,可以像使用其他视图组件一样使用 CardView。您可以通过 card_view 命名空间中的属性来自定义 CardView 的外观:
cardCornerRadius:设置卡片的圆角半径。
cardElevation:设置卡片的阴影高度。
cardBackgroundColor:设置卡片的背景颜色。
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
card_view:cardCornerRadius="12dp"
card_view:cardElevation="6dp"
card_view:cardBackgroundColor="@color/white">
<!-- 内部布局 -->

</androidx.cardview.widget.CardView>

步骤三:添加 TXCloudVideoView

使用 CardView 包裹 TXCloudVideoView,从而使得腾讯云视频渲染控件实现阴影、圆角等效果。
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
card_view:cardCornerRadius="12dp"
card_view:cardElevation="6dp"
card_view:cardBackgroundColor="@color/white">
<com.tencent.rtmp.ui.TXCloudVideoView
android:id="@+id/live_cloud_view_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</androidx.cardview.widget.CardView>

在代码中动态创建和操作 CardView

当然,除了在布局文件中使用 CardView,也可以在代码中动态创建和操作 CardView,示例代码如下。
// 初始化 CardView CardView cardView = new CardView(context); // 设置 CardView 的属性 cardView.setRadius(12f); // 设置圆角半径 cardView.setCardElevation(6f); // 设置阴影高度 cardView.setCardBackgroundColor(ContextCompat.getColor(this, R.color.white)); // 设置背景颜色 // 初始化 TXCloudVideoView TXCloudVideoView txCloudVideoView = new TXCloudVideoView(context); // 将 TXCloudVideoView 添加到 CardView cardView.addView(txCloudVideoView); // 将 CardView 添加到父布局 parentLayout.addView(cardView);

iOS 平台

腾讯云实时音视频、直播和点播播放器等产品均会涉及到视频渲染控件的使用。在 iOS 平台,可以直接使用 UIView 来设置圆角和阴影等效果。

设置圆角效果

如果您需要单独设置圆角效果,可参考如下代码示例实现。
UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(50, 100, 200, 200)];
contentView.backgroundColor = [UIColor whiteColor];
contentView.layer.cornerRadius = 20;
// 剪切以显示圆角
contentView.clipsToBounds = YES;
// 添加到主视图
[self.view addSubview:contentView];
// 开启本地摄像头的预览画面
[self.trtcCloud startLocalPreview:self.isFrontCamera view:contentView];

设置圆角和阴影

如果您需要同时设置圆角和阴影效果,此时需要使用两个视图:一个视图用于显示阴影,另一个视图用于显示内容并设置圆角。这样可以确保圆角和阴影都能正确显示。下面是详细的步骤和代码示例。
// 容器视图,用于阴影
UIView *shadowView = [[UIView alloc] initWithFrame:CGRectMake(50, 100, 200, 200)];
shadowView.layer.shadowColor = [UIColor redColor].CGColor;
shadowView.layer.shadowOpacity = 0.5;
shadowView.layer.shadowOffset = CGSizeMake(5, 5);
shadowView.layer.shadowRadius = 10;
shadowView.backgroundColor = [UIColor clearColor];
shadowView.clipsToBounds = NO; // 保持为NO以显示阴影

// 内容视图,用于显示内容和设置圆角
UIView *contentView = [[UIView alloc] initWithFrame:shadowView.bounds];
contentView.backgroundColor = [UIColor whiteColor];
contentView.layer.cornerRadius = 20;
contentView.clipsToBounds = YES; // 剪切以显示圆角

[shadowView addSubview:contentView]; // 将内容视图添加到阴影视图
[self.view addSubview:shadowView]; // 将阴影视图添加到主视图

// 开启本地摄像头的预览画面
[self.trtcCloud startLocalPreview:self.isFrontCamera view:contentView];