Exo 使用自定义UI

这部分看了网上一些文章,说的都很含糊,而且都是抄袭的。

总结下最近使用的感受和经验。

UI components

官网demo说的已经很详细,但是很多细节google都没处理,很多也没处理好。如果不是为了字幕的加载,和需求特殊,我可能不会选择exo单独使用。

gradle 依赖

implementation 'com.google.android.exoplayer:exoplayer-ui:2.X.X'

重要的组件,StyledPlayerControlView, StyledPlayerView, PlayerControlView and PlayerView.

样式化的变体提供了很全,但是更难定制。

StyledPlayerControlView and PlayerControlView

是用于控制回放的视图。它们显示标准播放控件,包括播放/暂停按钮、快进和快退按钮以及搜索栏。

PlayerControlView and PlayerView.

它们在播放过程中显示视频、字幕和专辑艺术,以及分别使用StyledPlayerControl视图或PlayerControl视图的播放控件。

Player views

根据官网介绍

<com.google.android.exoplayer2.ui.StyledPlayerView
    android:id="@+id/player_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:show_buffering="when_playing"
    app:show_shuffle_button="true"/>

xml 里面这么生命使用基本demo就可以。但是如果自定义定制修改,需要重写StyledPlayerView,或者PlayerView .挺让人头大,可能不是架构功能,所以Google写的很死

Player control views

官网xml

<com.google.android.exoplayer2.ui.StyledPlayerControlView
    android:id="@+id/player_control_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

很明显。Sample例子:StyledPlayerView 和 StyledPlayerControlView 是配套使用。PlayerView 和 PlayerControlView 配套

Customization

自定义,最让人心烦,也是很苦恼的问题,功能很全但是改UI就很苦恼。我主要看重他的字幕功能。

如果想定制drawable和layout还是有很多坑的。(就像接入融云等一些聊天的UI)

官网修改UI简单做法

在自己项目中写一个一样名字的xml, exo_player_control_view.xml

如:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

  <ImageButton android:id="@id/exo_play"
      android:layout_width="100dp"
      android:layout_height="100dp"
      android:layout_gravity="center"
      android:background="#CC000000"
      style="@style/ExoMediaButton.Play"/>

  <ImageButton android:id="@id/exo_pause"
      android:layout_width="100dp"
      android:layout_height="100dp"
      android:layout_gravity="center"
      android:background="#CC000000"
      style="@style/ExoMediaButton.Pause"/>

</FrameLayout>

或者

覆盖布局文件是在整个应用程序中更改布局的最佳解决方案,但如果只在单个位置需要自定义布局,该怎么办?要实现这一点,首先定义一个布局文件,就像覆盖一个默认布局一样,但这次给它一个不同的文件名,例如custom_controls.xml。其次,使用一个属性指示在膨胀视图时应使用此布局。例如,在使用PlayerView时,可以使用controller_layout_id属性指定用于提供播放控件的布局

<com.google.android.exoplayer2.ui.PlayerView android:id="@+id/player_view"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     app:controller_layout_id="@layout/custom_controls"/>

这样也只能修改简单的按钮,和他预定义定死的按钮。

吐槽

  1. Google定死了id,你必须按照他的来,否则就像我一样全部重写,或者部分重写
    定制需要吧values.xml, 拿出来放到自己的项目。styles.xml 也是覆写

  2. PlayerView相关就把代码粘贴出来改。

  3. 关于控制,你必须通读UI相关源代码。而且全屏和旋转都需要自己控制。

  4. 设计师,必须有播放器和技术相关经验,不然程序累死找bug定制UI

  5. 不建议用,特殊情况可以,根据需求定制吧。

  6. 解耦太难。

©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容