`
cyhmna
  • 浏览: 32883 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

关于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)视频在横屏播放时,这时手机的宽度大于高度
这时,全屏时,视频的宽高变化同横屏。
1
0
分享到:
评论
1 楼 yanjunhui2011 2012-07-24  
http://download.csdn.net/detail/yanjunhui2011/4409922
这里是DEMO下载地址。

相关推荐

    VideoView自定义控制视频播放器代码

    在Android开发中,VideoView是系统提供的一种用于播放视频的视图组件,它极大地简化了视频播放的功能。然而,为了满足更多个性化的需求,开发者经常需要对VideoView进行自定义,以便实现更丰富的功能,比如控制面板...

    Android编程实现VideoView循环播放功能的方法

    首先,我们从给出的代码片段来看,`VideoActivity`是继承自`Activity`的类,它包含了实现VideoView循环播放的核心逻辑。在`onCreate()`方法中,通过`setContentView()`设置了布局,并通过`findViewById()`找到了...

    android中音频和视频的播放

    `VideoView`是一个用于播放视频的视图组件,它可以直接嵌入到布局中,支持全屏模式。了解以下要点: - **设置视频源**:通过`setVideoURI()`或`setVideoPath()`方法设置视频源,可以是本地文件或网络链接。 - **...

    android视频播放器-源码.docx

    5. **VideoView**:`VideoView` 是Android提供的一个组件,用于播放音频和视频。在 `onCreate()` 方法中,根据Intent携带的数据(可能是用户从文件浏览器选择的视频路径)设置 `VideoView` 的视频源。如果数据为空,...

    VideoPlay.zip

    在Android开发中,`VideoView` 是一个非常重要的组件,用于播放视频内容。当我们需要实现一个功能,比如在一个应用中循环播放本地视频时,就会涉及到`VideoView`的重复播放和无缝连接。在这个"VideoPlay.zip"文件中...

    android在线视频播放器源码

    例如,M3U8是一个用于定义多媒体播放列表的文件格式,需要解析来获取视频片段的URL。 4. **缓存机制**:为了提高用户体验,通常会实现缓存功能。这可能涉及使用`DiskLruCache`或者`OkHttp`的缓存策略,将视频数据...

    video-layout2.zip

    `video-layout2.zip`这个压缩包文件显然包含了关于在布局背景上播放视频的示例代码,这通常涉及到Android的`TextureView`和`VideoView`组件的使用。这两个视图类在Android多媒体处理中扮演着重要角色,它们允许...

    jiaozivideoplayer-develop.zip

    在实际开发中,我们可以通过以下代码片段快速实现一个基本的视频播放功能: ```java JiaoZiVideoPlayer.SimplePlayer simplePlayer = JiaoZiVideoPlayer.createSimplePlayer(this, R.id.vp_container, videoUrl); ...

    网络视频播放 缓冲 横竖屏 时间 进度显示

    例如,在Android中,可以使用VideoView或ExoPlayer来处理视频播放;在iOS中,AVPlayer和AVPlayerLayer是常见的选择。这些库提供了处理缓冲、屏幕旋转、时间同步和进度控制的接口和方法。 在具体实现过程中,还需要...

    仿抖音列表

    这种设计使得用户可以在上下滑动列表时,视频能够自动播放并全屏展示,提供了一种流畅且吸引人的交互体验。接下来,我们将深入探讨实现这样一个功能所需的关键知识点。 首先,核心在于创建一个可滚动的列表视图。在...

    安卓实现直播

    它是一个文本文件,包含了媒体文件的多个TS(Transport Stream)片段的URL列表,通过不断地加载和播放这些小片段来实现流畅的视频播放。 2. **HLS流媒体技术**:HLS协议允许服务器将视频流分割成一系列小的TS文件,...

Global site tag (gtag.js) - Google Analytics