android之视频播放系统VideoView和自定义VideoView控件的应用
Android播放视频,包含系统自带VideoView控件,和自定义VideoView控件,可全屏播放,案例包含了本地视频和网络视频。 1:自定义VideoView控件 2:布局代码 3:Activity代码: 4:网络权限 5:效果图 小结:其中的Uri mUri = Uri.parse(“android.resource://” + getPackageName() +”/”+ R.raw.qiche);//本地视频 是加载的本地视频,可以下载一个视频,在res目录下建立文件夹raw,将其放入其中。 您可能感兴趣的文章:Andro 在Android开发中,播放视频是一项常见的需求,而`VideoView`是Android SDK提供的一种便捷的视频播放组件。本文将深入探讨如何使用系统自带的`VideoView`以及如何自定义`VideoView`控件来实现视频播放功能,同时涵盖本地视频和网络视频的播放。 1. **系统自带VideoView控件**: `VideoView`是Android SDK中的一个视图类,它继承自`SurfaceView`,可以直接在布局文件中声明并使用。`VideoView`提供了播放、暂停、停止等基本操作,通过设置`setVideoURI(Uri uri)`方法可以指定播放的视频源。例如,对于本地视频,我们可以使用如下方式设置: ```java Uri mUri = Uri.parse("android.resource://" + getPackageName() + "/"+ R.raw.qiche); VideoView videoView = (VideoView) findViewById(R.id.video_view); videoView.setVideoURI(mUri); ``` 这里的`R.raw.qiche`是指向资源文件夹`res/raw`中的视频文件,`getPackageName()`用于获取应用包名,`Uri.parse`则组合成指向本地资源的完整路径。 2. **自定义VideoView控件**: 虽然系统提供的`VideoView`已经能满足基本需求,但有时我们需要更灵活的控制,如添加额外的控制元素、自定义播放界面等,这时可以考虑自定义`VideoView`。自定义控件通常涉及到重写父类的一些方法,例如`onCreate()`、`onStart()`、`onResume()`等,以便在合适的时候初始化和启动播放器。同时,可能还需要添加触摸事件监听,实现全屏切换等功能。 3. **布局代码**: 在XML布局文件中,可以像普通视图一样添加`VideoView`,并设置其尺寸和位置: ```xml <VideoView android:id="@+id/video_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" /> ``` 4. **Activity代码**: 在Activity中,需要初始化`VideoView`,设置视频源,并注册监听器来处理播放状态的变化: ```java videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { // 开始播放 videoView.start(); } }); videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { // 播放结束后的处理 } }); ``` 5. **网络权限**: 如果要播放网络视频,还需要在AndroidManifest.xml中添加Internet权限: ```xml <uses-permission android:name="android.permission.INTERNET" /> ``` 6. **全屏播放**: 为了实现全屏播放,可以在布局中添加一个全屏按钮,然后在点击事件中改变`VideoView`的尺寸,或者切换到横屏模式。 7. **常见问题与解决方法**: - **无法播放此视频**:检查视频编码格式是否支持,Android系统默认支持MP4、3GP等格式。 - **播放卡顿**:可能是网络问题,优化网络请求或使用缓存策略。 - **循环播放**:通过`MediaPlayer`的`setLooping(true)`方法实现循环播放。 通过以上步骤,我们可以实现Android应用中对视频播放的基本控制。然而,对于更复杂的视频播放需求,如进度条控制、手势调节音量和亮度、广告插播等,可能需要结合`SurfaceView`、`MediaPlayer`或其他第三方库(如ExoPlayer)进行更深度的定制。
- 粉丝: 6
- 资源: 936
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0