当前位置: 代码迷 >> Android >> 关于android手机播发视频按比例全屏_videoview代码片段分析
  详细解决方案

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

热度:65   发布时间:2016-05-01 20:23:27.0
关于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)视频在横屏播放时,这时手机的宽度大于高度
这时,全屏时,视频的宽高变化同横屏。
  相关解决方案