当前位置:   article > 正文

Android VideoView的使用细节——封面设置、播放黑屏处理等_videoview设置封面

videoview设置封面

目录

一般使用流程

layout文件中定义VideoView组件

代码中的初始化使用

组件获取

设置视频播放路径

设置视频播放控制器

获取焦点开始播放

设置视频封面

Layout文件内添加RelativeLayout

控件获取

监听视频播放完成设置图片可见

解决视频播放第一帧时的短暂黑屏


一般使用流程

layout文件中定义VideoView组件

  1. <VideoView
  2. android:id="@+id/video"
  3. android:layout_width="match_parent"
  4. android:layout_height="410dp" />

代码中的初始化使用

组件获取

kotlin中可以直接使用VideoView的id(这里是video)来进行操作

java中需要findViewById来获取控件

view=findViewById(R.id.video);                                            

设置视频播放路径

通过VideoView类对象的setVideoPath来设置视频路径

这里的视频路径可以是Android本地的视频也可以是视频的网页url链接

当要播放Android本地视频时,需要添加访问存储的权限(Andoridmanifest.xml文件内添加,代码动态申请)

  1. //网页视频Url链接
  2. //String Path="https://mos-vod-drcn.dbankcdn.cn/P_VT/video_injection/711346606/v3/52B0F7951327599661900370304/MP4Mix_H.264_1920x1080_6000_HEAAC1_PVC_NoCut.mp4?accountinfo=0N4yN1mj5VdH9HFql04pfwgjH5f9%2Fd0uVg9g40mn3NWLOJOG7eYt8reLME3%2FDKUKDvOYMWk86UCXjG3tLFa4wg%3D%3D%3A20211206095003%3AUTC%2C%2C%2C20211206095003%2C%2C%2C-1%2C1%2C0%2C%2C%2C1%2C%2C%2C%2C1%2C%2C0%2C%2C%2C%2C%2C1%2CEND&GuardEncType=2&contentCode=M202112061761327599233494155265&spVolumeId=MP202112061761327599230507810816&server=mosplay-drcn.himovie.hicloud.com&protocolType=1&formatPriority=504*%2C204*%2C2"
  3. //view.setVideoPath(Path)
  4. // Android本地视频
  5. String path = Environment.getExternalStorageDirectory().getPath()+"/test.mp4";
  6. view.setVideoPath(path);

设置视频播放控制器

  1. MediaController mediaController = new MediaController(MainActivity.this);
  2. //VideoView与MediaController建立关联
  3. view.setMediaController(mediaController);

获取焦点开始播放

  1. view.requestFocus();
  2. view.start();

设置视频封面

设置视频封面的解决方法是采用RelativeLayout的布局方式,在Layout布局内添加ImageView覆盖掉VideoView当视频播放时ImageView的可见性为Gone,视频播放完成时ImageView的可见性为Visible

Layout文件内添加RelativeLayout

  1. <RelativeLayout
  2. android:layout_width="match_parent"
  3. android:layout_height="410dp">
  4. <VideoView
  5. android:id="@+id/video"
  6. android:layout_width="match_parent"
  7. android:layout_height="410dp"/>
  8. <ImageView
  9. android:id="@+id/video_holder"
  10. android:layout_width="match_parent"
  11. android:layout_height="410dp"
  12. android:background="@drawable/image"/>
  13. </RelativeLayout>

要确保ImageView的尺寸大于等于VideoView的尺寸

控件获取

仍与VideoView控件的获取方式类似,Kotlin可以直接使用id而Java需要findViewById

监听视频播放完成设置图片可见

监听视频播放完成的监听器方法是:setOnCompletionListener

具体代码如下:

  1. view.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
  2. @Override
  3. public void onCompletion(MediaPlayer mp) {
  4. view.pause(); //视频暂停
  5. imageView.setVisibility(View.VISIBLE); //遮挡图片设置可见
  6. }
  7. });

视频播放时设置ImageView不可见的具体操作在解决播放第一帧短暂黑屏中解决 

解决视频播放第一帧时的短暂黑屏

视频播放第一帧时的短暂黑屏可以监听视频播放的第一帧开始时再设置ImageView不可见

具体的监听方法是:setOnPreparedListener和其内嵌套的setOnInfoListener

代码如下:

  1. view.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
  2. @Override
  3. public void onPrepared(MediaPlayer mp) {
  4. mp.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
  5. mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
  6. @Override
  7. public boolean onInfo(MediaPlayer mp, int what, int extra) {
  8. //播放第一帧时设置图片消失
  9. if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START)
  10. imageView.setVisibility(View.GONE);
  11. return true;
  12. }
  13. });
  14. }
  15. });
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/499367
推荐阅读
相关标签
  

闽ICP备14008679号