Android-WebKit视频播放原理之一 —— 界面呈现部分

本文介绍了Android中基于WebKit的浏览器如何处理视频播放的界面呈现。BrowserActivity使用特殊的布局管理,通过HTML5VideoViewProxy在全屏和非全屏间切换。视频播放由用户触发,从DOM到MediaPlayer的调用链路清晰。当关闭视频时,如按HOME或BACK键,会执行一系列回调,释放资源并停止播放。
摘要由CSDN通过智能技术生成

在了解这部分功能之前,需要先了解一下浏览器的布局特点。在大部分应用里面,Activity的Layout文件是通过Activity::setContentView来指定的。不过浏览器的BrowserActivity有点特殊。他首先通过BrowserActivity所使用的DecorView取得其窗口内容的根View (由com.android.internal.R.id.content指定,请注意这里是窗口内容的根,并不是所有View的根),然后把R.layout.custom_screen作为其第一个孩子加入。

R.layout.custom_screen是FrameLayout类型,在全屏幕的情形(主要是视频),显示fullscreen_custom_content部分。否则显示LinearLayout节点的内容。

BrowserActivity主要成员介绍:

BrowserActivity::mCustomViewContainer,全屏使用的布局;

BrowserActivity::mContentView,非全屏布局

BrowserActivity::mErrorConsoleContainer,不了解;

 

视频播放流程(这个动作是由用户发起,DOM作为事件的传递者):

(C++)

MediaDocument::defaultEventHandler

HTMLMediaElement::play

HTMLMediaElement::playInternal

HTMLMediaElement::updatePlayState

MediaPlayer::play

MediaPlayerVideoPrivate::play,调用Java层得HTML5Video

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值