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

安卓手机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)

相关推荐

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

    2024-04-29 11:24:04       12 阅读
  2. 手机APP开发__媒体开发部分__APK裁剪

    2024-04-29 11:24:04       13 阅读
  3. 手机APP开发__媒体开发部分__媒体

    2024-04-29 11:24:04       15 阅读
  4. 手机APP开发__媒体开发部分__媒体

    2024-04-29 11:24:04       13 阅读
  5. 手机APP开发__媒体开发部分__直播流

    2024-04-29 11:24:04       15 阅读
  6. 手机APP开发__媒体开发部分__网络栈

    2024-04-29 11:24:04       16 阅读
  7. 手机APP开发__媒体开发部分__媒体投屏

    2024-04-29 11:24:04       12 阅读
  8. 手机APP开发__媒体开发部分__检索元数据

    2024-04-29 11:24:04       13 阅读
  9. 手机APP开发__媒体开发部分__音轨的选择

    2024-04-29 11:24:04       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-29 11:24:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-29 11:24:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-29 11:24:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-29 11:24:04       18 阅读

热门阅读

  1. android:maxEms=“5“ 为什么可以显示6个文字呢?

    2024-04-29 11:24:04       6 阅读
  2. SpringMVC

    SpringMVC

    2024-04-29 11:24:04      11 阅读
  3. Android 11在app中修改屏幕亮度

    2024-04-29 11:24:04       11 阅读
  4. [SQL系列]从零开始学Clickhouse

    2024-04-29 11:24:04       11 阅读
  5. Docker-05 Docker容器命令

    2024-04-29 11:24:04       7 阅读
  6. C#三人飞行棋

    2024-04-29 11:24:04       8 阅读
  7. 用 Python 进行渗透测试

    2024-04-29 11:24:04       10 阅读
  8. 【K8s】工作以来遇到的K8s相关问题、故障

    2024-04-29 11:24:04       6 阅读
  9. 加密,解密 crypto-js、 计算哈希值,js-sha3

    2024-04-29 11:24:04       9 阅读
  10. MATLAB初学者入门(24)—— 聚类算法

    2024-04-29 11:24:04       8 阅读
  11. EureKa详解

    2024-04-29 11:24:04       10 阅读