Exoplayer的详细使用UI篇

2024-04-24 12:08
文章标签 使用 ui 详细 exoplayer

本文主要是介绍Exoplayer的详细使用UI篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. ExoPlayer中的UI主要分

  1. 主视频播放控件PlayerView 、StyledPlayerView
  2. 控制控件PlayerControlView
  3. 主视频覆盖view,exo_overlay

其他还有包括字幕,插图等控件

2. 使用方式

控件PlayerView与PlayerControlView都提供的是布局layout id设置方式来让用户自定义界面。

在控件中解析layout id中特定id的控件来达到用户自定义布局中的控件与视频播放ExoPlayer关联

<com.google.android.exoplayer2.ui.PlayerViewandroid:id="@+id/player_view"app:auto_show="false"app:fastforward_increment="30000"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:player_layout_id="@layout/live_playback_custom_player_view_layout"  />

live_playback_custom_player_view.xml

    <FrameLayoutandroid:id="@id/exo_overlay"android:layout_width="match_parent"android:layout_height="match_parent"><com.up366.mobile.live.air.view.AirTeachLiveStateViewandroid:id="@+id/live_state_view"android:layout_width="match_parent"android:layout_height="match_parent"android:visibility="gone"/></FrameLayout><com.google.android.exoplayer2.ui.PlayerControlViewandroid:id="@+id/exo_controller"android:layout_width="match_parent"android:layout_height="match_parent"app:controller_layout_id="@layout/live_play_custom_playercontroller_layout"></com.google.android.exoplayer2.ui.PlayerControlView>

id=exo_overlay为视频之上可显示的控件,在空中教研中主要显示自定义的播放视频的各种状态显示。

id=exo_controller为用户控制播放器的控件id.

live_play_custom_playercontroller_layout.xml

    <!--视频播放头部显示--><include layout="@layout/live_play_title_include" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:layout_alignParentBottom="true"android:background="@drawable/bg_air_teach_play_bottom_control"android:gravity="center_vertical"android:orientation="horizontal"android:paddingStart="15dp"android:paddingEnd="20dp"><FrameLayoutandroid:layout_width="wrap_content"android:layout_height="match_parent"><!--开始播放按钮--><ImageButtonandroid:id="@id/exo_play"android:layout_width="28dp"android:layout_height="28dp"android:layout_gravity="center"android:background="@android:color/transparent"android:padding="5dp"android:src="@drawable/start_live_play" /><!--暂停按钮--><ImageButtonandroid:id="@id/exo_pause"android:layout_width="28dp"android:layout_height="28dp"android:layout_gravity="center"android:background="@android:color/transparent"android:padding="5dp"android:src="@drawable/stop_live_play" /></FrameLayout><!--播放当前时间显示--><TextViewandroid:id="@id/tv_current_time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:includeFontPadding="false"android:paddingLeft="4dp"android:paddingRight="4dp"android:text="00:00"android:textColor="@color/white"android:textSize="12sp"android:textStyle="bold" /><!--播放进度条--><com.up366.mobile.live.air.view.CustomTimeBarandroid:id="@id/exo_progress"android:layout_width="0dp"android:layout_height="20dp"android:layout_weight="1"app:bar_height="2dp"app:bar_corner="1dp"app:scrubber_disabled_size="10dp"app:scrubber_enabled_size="10dp"app:played_color="@color/c1"app:unplayed_color="@color/white"app:buffered_color="@color/white"/><!--视频时长显示--><TextViewandroid:id="@+id/tv_total_time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:includeFontPadding="false"android:paddingLeft="4dp"android:paddingRight="4dp"android:text="00:00:00"android:textColor="@color/white"android:textSize="12sp"android:textStyle="bold" /></LinearLayout>

更过的控件ID可以查看ExoPlayer的源码U模块,PlayerView在创建时解析控件与ids.xml中对控件ID名字的描述

3. 自定义控件显示

ExoPlayer的设计符合依赖倒置与接口隔离原则(依赖与抽象接口不依赖具体实现,以接口分割功能),所以我们可以很好的进行扩展。

ExoPlayer有提供了UI的默认实现,给我们很好的例子,几乎特殊的UI需求也只需要简单的抄写修改就行。
eg: ExoPlayer的DefaultTimeBar进行简单绘制修改就能满足我们特殊的UI需求。

PlayerView还给我们提供了一系列的控制控制控件显示隐藏的参数和方法。

总结:ExoPlayer提供了上面两种功能就能极大减少我们构建自定义播放界面的工作,使用特别快速。

这篇关于Exoplayer的详细使用UI篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/931714

相关文章

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

c# checked和unchecked关键字的使用

《c#checked和unchecked关键字的使用》C#中的checked关键字用于启用整数运算的溢出检查,可以捕获并抛出System.OverflowException异常,而unchecked... 目录在 C# 中,checked 关键字用于启用整数运算的溢出检查。默认情况下,C# 的整数运算不会自

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

Mybatis官方生成器的使用方式

《Mybatis官方生成器的使用方式》本文详细介绍了MyBatisGenerator(MBG)的使用方法,通过实际代码示例展示了如何配置Maven插件来自动化生成MyBatis项目所需的实体类、Map... 目录1. MyBATis Generator 简介2. MyBatis Generator 的功能3

Python中使用defaultdict和Counter的方法

《Python中使用defaultdict和Counter的方法》本文深入探讨了Python中的两个强大工具——defaultdict和Counter,并详细介绍了它们的工作原理、应用场景以及在实际编... 目录引言defaultdict的深入应用什么是defaultdictdefaultdict的工作原理

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem