安卓手机APP开发__媒体开发部分__用户界面定制

ops/2024/10/19 9:31:50/

安卓手机APP开发__媒体开发>媒体开发部分__用户界面定制

目录

最佳实践

播放/暂停按钮

监听状态的更新

处理可用的指令


Media3提供了一个默认的播放器视图,这个视图提供了一些定制化的选项。
对于任何进一步的定制,APP开发者都期望实现他们的自己的用户界面的组件。

最佳实践

当实现的一个媒体用户界面连接到一个媒体3的播放器时,(例如ExoPlayer)
APP被期望遵循如下的最佳实践。

播放/暂停按钮
 

播放/暂停按钮不直接反馈到一个单独的播放器状态。例如,一个用户应用能够
重启动播放,这是在播放结束或者是播放失败时的情况,甚至是播放器没有暂停的状态下。

为了简化实现,媒体3提供了工具方法来决定显示哪一个按钮,并且处理按钮的响应。

Kotlin

val shouldShowPlayButton: Boolean = Util.shouldShowPlayButton(player)
playPauseButton.setImageDrawable(if (shouldShowPlayButton) playDrawable else pauseDrawable)
playPauseButton.setOnClickListener { Util.handlePlayPauseButtonAction(player) }

监听状态的更新

用户界面的组件需要加到一个播放器的监听器中,保证在播放器状态改变时得到播放器的监听器
的通知,这会让用户界面进行更新。

刷新用户界面是有代价的,并且多个播放器事件会一起到来。为了避免刷新用户界面
太频繁了,仅监听onEvents,然后从那触发用户界面的更新比较好:

Kotlin

player.addListener(object : Player.Listener{override fun onEvents(player: Player, events: Player.Events){if (events.containsAny(Player.EVENT_PLAY_WHEN_READY_CHANGED,Player.EVENT_PLAYBACK_STATE_CHANGED,Player.EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED)) {updatePlayPauseButton()}if (events.containsAny(Player.EVENT_REPEAT_MODE_CHANGED)) {updateRepeatModeButton()}}
})

处理可用的指令

一个通用的目的的用户界面的组件,可能需要和不同的播放器的实现一起工作。
应该检查可用的播放器的指令,来显示或者隐藏按钮,来避免调用了不支持的方法:

Kotlin

nextButton.isEnabled = player.isCommandAvailable(Player.COMMAND_SEEK_TO_NEXT)


http://www.ppmy.cn/ops/22252.html

相关文章

Python学习之旅预告:深入机器学习的奇妙世界 —— 从基础到前沿

探索人工智能的无限可能 亲爱的读者们, 在接下来的几篇博客中,我将带领大家深入探索机器学习这一令人兴奋的领域。从基础概念到实际应用,再到未来趋势,我们将一起揭开人工智能的神秘面纱。 第一篇:机器学习初探 我们…

Android 当存在双卡时,移动网络默认为SIM卡1

文章目录 一、当Android设备中存在双卡时,移动网络默认为SIM卡1二、下面是完整的代码路径和修改点 一、当Android设备中存在双卡时,移动网络默认为SIM卡1 完成这个需求有以下两个修改点: 下面依旧是Android13 MTK平台,在MtkMulti…

C/C++中的逻辑运算与汇编指令的交互

本节课在线学习视频: ​​​https://pan.quark.cn/s/ac291414101c​​​ 逻辑操作是编程中的基础,它们在C/C中广泛使用,并在底层汇编语言中由专门的指令对应执行。本文将通过探讨C/C中的逻辑或运算(​​||​​)和逻辑非运算(​​!​​)&…

STM32入门_江协科技_1~2_OB记录的自学笔记_STM32简介

1.综述 1.1. 课程简介 手打代码是加入了实操,增加学习效果; STM最小系统板面包板的硬件平台; 配套0.96寸的显示屏,便于调试; 因为使用面板板,所以如果程序现象不出来也有可能是硬件连接的问题; …

QT支持多种开发语言

QT主要是一个C应用程序框架,但它也提供了对其他一些编程语言的官方或非官方支持。以下是QT支持的一些语言版本及其特点。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.Python (PyQt) : PyQt是QT的官方Pyth…

自定义表单系统开源是否好用?

在竞争激烈的社会中,拥有够灵活、易维护、可视化界面等优势特点的低代码技术平台获得了很多中小型企业的认可与信赖。在提升企业竞争力、办公效率和规避信息孤岛等方面具有重要的应用价值和作用。流程信息为客户提供低代码技术平台、自定义表单系统开源,…

ceph 1 pool(s) do not have an application enabled

查看 ceph 状态 cluster:id: 58f90b9a-155c-43cf-98af-54cb611fc8e0health: HEALTH_OKservices:mon: 3 daemons, quorum a,b,d (age 79m)ne>mgr: b(active, since 59m), standbys: ane>mds: 1/1 daemons up, 1 hot standbyne>osd: 6 osds: 6 up (since 79m), 6 in…

《从Paxos到Zookeeper》——第四、七章:基本概念及原理

目录 第四章 Zookeeper与Paxos 4.1 Zk是什么 4.1.1 Zk特性 4.1.2 Zk基本概念 4.1.2.1 集群角色(Follower, Leader, Observer) 4.1.2.2 数据模型 4.1.2.3 ZNode(数据节点) 4.1.2.4 Session(会话) 4.1.2.5 ACL(Access Control Lists) 4.1.2.6 Watcher(事件…