Koolearn视频播发器 框架分享

东方盛慧科技大约 2 分钟androidandroid技术

Koolearn视频播发器 框架分享

本文简要介绍一下播放器UI库,以便相关项目成员对播放器UI库有一个整体的认识

一、公司安卓播放器架构组成

分四层:业务层、播放器UI层、播放器层、底层

img
img
  • 底层为视频流编解码等,由视频组开发
  • 播放器层属于视频组对外提供的播放器
  • ui库作为单独的库对其它安卓项目提供;
  • 业务层各个项目组自己实现

二、播放器UI库

1. 类图

dd2
dd2

2. 集成方法

KoolearnMediaUI

  1. 在onCreate()中执行 2、3步
  2. new KoolearnMediaUi() 创建实例 并 实现相关接口参数
  3. 设置Fragment或者Activity的布局 setContentView(getContentView())
  4. fragment actvity的各个生命周期中调用:onStart onResume onPause onStop onDestory onConfiguratonChanged onKeyDown

3. ui布局结构

播放器布局复杂且交互较多,ui布局合理性直接影响到播放器的代码结构及可读性,所以比较重要

UI布局分四块:

  • 底部:进度条 播放控制区
  • 顶部:返回按钮 视频名称等
  • 左边:锁屏功能
  • 右边:菜单、设置功能
  • 中间:左半区 屏幕亮度、右半区 声音控制、中间进度拖拽及提示框 加载框等
  • 底部弹出:评价、提问等半屏弹出界面 dd2

整体布局思路:KoolearnMediaUI 通过xml布局 读取 ControllerView(手势检测布局,对外提供回调接口) 然后根据横竖屏情况 动态添加 FullScreenController或者PortraintScreenController,FullScreenController 和PortraintScreenController以组件化的方式集成上下左右布局,其中公共控件又可以单独实现,以进一步进行解耦,具体在此不做过多阐述。 优势:进行的合理解耦,可以避免在一个类中做各种布局组件和手势等逻辑的堆砌。部分功能ui和逻辑解耦,比如StatusBar为顶部布局,如果其中的倍速按钮需要移动到底部MediaController布局中,那么直接移动控件即可,点击事件及相应逻辑是在ScreenController中,不需要额外处理

三、未来优化方向:

  1. 对下与播放器本身分离,如有必要可以替换成其它播放器:原生的mediaplayer、vitamio等
  2. 对上与公司业务分离
  3. 站点 倍速等功能可以选择性的集成
  4. 设置 倍速等功能按钮可以便携的移动到播放器的上下左右等位置
  5. 界面中可以弹出半屏框,而不是构造一个透明activity
  6. 广告支持等

开发中注意点:

  1. 后台播放功能
  2. 生命周期关联问题
  3. 网络切换免流等引起的业务问题
  4. 屏幕旋转、home键返回、来电、锁屏等各种情况的处理
上次编辑于:
贡献者: 雷勋