package com.ypx.imagepicker.helper; import android.content.Context; import android.graphics.Color; import android.media.MediaPlayer; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.VideoView; import com.ypx.imagepicker.bean.ImageItem; import com.ypx.imagepicker.views.PickerUiConfig; import com.ypx.imagepicker.presenter.IPickerPresenter; /** * Time: 2019/9/30 9:45 * Author:ypx * Description: 视频播放 */ public class VideoViewContainerHelper { private VideoView videoView; private ImageView previewImg; private ImageView pauseImg; public void loadVideoView(ViewGroup parent, ImageItem imageItem, IPickerPresenter presenter, PickerUiConfig uiConfig) { Context context = parent.getContext(); if (videoView == null) { videoView = new VideoView(context); videoView.setBackgroundColor(Color.TRANSPARENT); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); params.gravity = Gravity.CENTER; videoView.setLayoutParams(params); previewImg = new ImageView(context); previewImg.setLayoutParams(params); previewImg.setScaleType(ImageView.ScaleType.FIT_CENTER); pauseImg = new ImageView(context); pauseImg.setScaleType(ImageView.ScaleType.CENTER_INSIDE); pauseImg.setImageDrawable(context.getResources().getDrawable(uiConfig.getVideoPauseIconID())); FrameLayout.LayoutParams params2 = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); params2.gravity = Gravity.CENTER; pauseImg.setLayoutParams(params2); } pauseImg.setVisibility(View.GONE); parent.removeAllViews(); parent.addView(videoView); parent.addView(previewImg); parent.addView(pauseImg); previewImg.setVisibility(View.VISIBLE); presenter.displayImage(previewImg, imageItem, 0, false); videoView.setVideoPath(imageItem.path); videoView.start(); //监听视频播放完的代码 videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mPlayer) { mPlayer.start(); mPlayer.setLooping(true); } }); videoView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (videoView.isPlaying()) { onPause(); } else { onResume(); } } }); videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() { @Override public void onSeekComplete(MediaPlayer mp) { videoView.start(); } }); mp.setOnInfoListener(new MediaPlayer.OnInfoListener() { @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) { // video 视屏播放的时候把背景设置为透明 videoView.setBackgroundColor(Color.TRANSPARENT); previewImg.setVisibility(View.GONE); return true; } return false; } }); } }); } public void onResume() { if (videoView != null && pauseImg != null) { videoView.start(); videoView.seekTo(videoView.getCurrentPosition()); pauseImg.setVisibility(View.GONE); } } public void onPause() { if (videoView != null && pauseImg != null) { videoView.pause(); pauseImg.setVisibility(View.VISIBLE); } } public void onDestroy() { if (videoView != null) { videoView.suspend();//将VideoView所占用的资源释放掉 } } }