关于android手机播放视频按比例全屏_videoview代码片段分析

1,首先,理解VideoView类中onMeasure函数对于屏幕的处理。即以下这段代码的含义。
if (mVideoWidth > 0 && mVideoHeight > 0) {
if ( mVideoWidth * height > width * mVideoHeight ) {
//Log.i("@@@", "image too tall, correcting");
height = width * mVideoHeight / mVideoWidth;
} else if ( mVideoWidth * height < width * mVideoHeight ) {
//Log.i("@@@", "image too wide, correcting");
width = height * mVideoWidth / mVideoHeight;
} else {
//Log.i("@@@", "aspect ratio is correct: " +
//width+"/"+height+"="+
//mVideoWidth+"/"+mVideoHeight);
}
}
这里,width,height为最终需要设置的视频的宽和高。
mVideoWidth,mVideoHeight为底层传上来的实际的视频的宽和高。
这段代码的含义解释如下:
1,在播放的视频的高度和宽度都小于手机屏幕的高度和宽度时;
(1)视频在竖屏播放时,这时手机的宽度小于高度
(a)mVideoWidth/ width > mVideoHeight/ height
这时,视频放大后,视频的宽度(mVideoWidth)先达到设备的宽度,全屏后,视频的宽度要用设备屏幕的宽度,高度要进行缩放。这时应该按照视频宽度的缩放比例对视频的高进行缩放,即缩放后的视频宽度选用手机屏幕的宽度,视频的高度要乘以mVideoWidth/ width。即为height = width * mVideoHeight / mVideoWidth;
(b)mVideoWidth/ width < mVideoHeight/ height
这时视频要按比例放大时,即视频的高度和宽度同乘以一个常数的话,高度先达到设备的高度。因此,全屏后,视频的高度要用手机的高度,视频的宽度要进行相应的缩放,且缩放比例为视频的高度的缩放比例。即width = height * mVideoWidth / mVideoHeight;
(2)视频在横屏播放时,这时手机的宽度大于高度
这时,全屏时,视频的宽高变化同横屏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值