在Android开发中,`SurfaceView` 和 `MediaPlayer` 是两个重要的组件,它们常被用于实现视频播放功能。`SurfaceView` 提供了一个高效的显示机制,适用于处理大量的图形更新,而`MediaPlayer` 则是Android系统提供的媒体播放器,能够处理各种音频和视频格式的播放。在本篇文章中,我们将深入探讨如何利用`SurfaceView` 和 `MediaPlayer` 控制视频的大小,以适应不同的屏幕尺寸和用户体验需求。 让我们了解`SurfaceView`。`SurfaceView` 是一个特殊的视图,它拥有自己的显示表面,可以独立于窗口管理器进行渲染,这使得它在处理多媒体数据时能够避免频繁的界面刷新带来的性能损失。在播放视频时,`SurfaceView` 的优点在于能够减少画面撕裂,提高播放流畅性。 `MediaPlayer` 类是Android的媒体播放引擎,它可以加载、解码和播放音频和视频文件。`MediaPlayer` 支持多种媒体源,包括本地文件、网络流和内容提供者的URI。对于视频播放,我们通常会将`MediaPlayer`与`SurfaceView` 结合使用,通过`MediaPlayer`加载和解码视频,然后在`SurfaceView`上显示。 要控制视频大小,我们需要关注以下几个关键步骤: 1. 创建`SurfaceView`: 在布局文件中添加`SurfaceView`,并将其ID设为`SurfaceHolder.Callback` 的引用,以便在`SurfaceView`准备就绪时接收通知。 2. 实现`SurfaceHolder.Callback`: 在Activity或Fragment中实现此接口,重写`surfaceCreated()`, `surfaceChanged()` 和 `surfaceDestroyed()` 方法。`surfaceChanged()`方法会在Surface尺寸变化时调用,我们可以在这里调整`MediaPlayer`的视频显示大小。 3. 初始化`MediaPlayer`: 使用`MediaPlayer.create()` 或者手动构造`MediaPlayer`对象,然后设置数据源(例如,本地文件路径)。调用`setDisplay()`方法,将`SurfaceView`的`SurfaceHolder`传递给`MediaPlayer`,使视频能够在`SurfaceView`上显示。 4. 调整视频大小:在`surfaceChanged()`方法中,获取`SurfaceView`的新尺寸,然后调用`MediaPlayer`的`setVideoSize()`方法,传入对应的宽度和高度参数。这样,`MediaPlayer`就会按照指定的尺寸播放视频。 5. 播放和控制:调用`MediaPlayer`的`prepare()`方法准备播放,然后通过`start()`开始播放。还可以利用`seekTo()`跳转到视频的任意位置,`pause()`暂停,`stop()`停止,`release()`释放资源。 6. 处理播放结束:监听`MediaPlayer`的`OnCompletionListener`,当视频播放完毕时,可以选择重新播放或执行其他操作。 7. 注意兼容性:不同设备的屏幕尺寸和分辨率各不相同,因此在设置视频大小时要考虑兼容性问题。可以使用`DisplayMetrics`获取设备的屏幕尺寸,并根据需要进行适配。 通过`SurfaceView`和`MediaPlayer`的组合,开发者可以实现自定义的视频播放功能,包括控制视频的大小以适应不同的屏幕。这不仅提高了用户体验,还为应用提供了更大的灵活性。在实际开发过程中,还需要考虑性能优化和异常处理,确保在各种情况下都能稳定地播放视频。
2025-07-06 11:51:35 5.39MB surfaceview mediaplayer 视频大小
1
SurfaceView实现幸运大抽奖.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
2023-05-11 20:52:43 3.82MB SurfaceView实现幸运大抽奖.rar
1
打开摄像头并对摄像头获取的每一帧图像进行保存,边录像和上传视频流,并保存为本地.h264文件
2023-04-14 20:05:11 12KB Socket 实时视频
1
这是本人早年刚接触android编程时在eclipse下写的一个未用游戏引擎,只是使用surfaceview绘图的小游戏,其中还构建了一个3D效果的图片浏览控件。最近无意中翻出来,感觉对新手还是有较大参考价值的,用android studio 3.6.3重新构建了项目,加入了动态权限申请,可正常运行,在此将代码与大家共享
1
自定义一个Dialog中播放视频,主要用到SurfaceView进行播放SDcard中的视频文件。可以对播放进行简单的操作,如:播放、暂停、进度条显示、推拽。另外需要的功能完全可以根据自己的需求添加。
2022-11-18 00:43:37 154KB Dialog 播放视频 SurfaceView 可控制
1
Android 获取实时预览视频流,通过SurfaceView渲染,简单易懂,使用参考: https://blog.csdn.net/renlei0012/article/details/88057229
2022-11-04 09:23:59 9.86MB camera SurfaceView
1
android 利用MediaPlayer+SurfaceView播放视频,与我的文章对应http://blog.csdn.net/shenxiaolei507/article/details/41349295,而且其中还有很多高级功能的实现,还包括ViedioView播放视频!!
1
Android SurfaceView添加组件view不被组件覆盖.rar
2022-07-05 18:07:40 78KB Android
Android SurfaceView游戏框架源码.rar
2022-07-04 14:10:28 44KB Android
一款android小游戏 类似腾讯飞机大战 适合初学者学习
2022-05-23 19:19:46 4.29MB surfaceview mvc模型
1