1.参照https://github.com/CarGuo/GSYVideoPlayer
2.首先在布局中使用
<com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
android:id="@+id/detail_player"
android:layout_width="match_parent"
android:layout_height="match_parent" />
3.代码中使用
package com.dejun.commonsdk.activity; import android.app.Activity; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; import android.widget.VideoView; import com.dejun.commonsdk.R; import com.dejun.commonsdk.base.BaseActivity; import com.dejun.commonsdk.base.mvp.BasePresenter; import com.dejun.commonsdk.constant.Extras; import com.dejun.commonsdk.util.GlideUtil; import com.shuyu.gsyvideoplayer.GSYVideoManager; import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder; import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack; import com.shuyu.gsyvideoplayer.listener.LockClickListener; import com.shuyu.gsyvideoplayer.utils.OrientationUtils; import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer; public class VideoPreviewActivity extends BaseActivity { private StandardGSYVideoPlayer mDetailPlayer; private boolean isPlay; private boolean isPause; private OrientationUtils orientationUtils; private String videoThumbUrl; private String videoUrl; public static void startActivity(Activity activity, String videoThumbUrl, String videoUrl) { Intent intent = new Intent(activity, VideoPreviewActivity.class); intent.putExtra(Extras.VIDEO_THUMB_URL, videoThumbUrl); intent.putExtra(Extras.VIDEO_URL, videoUrl); activity.startActivity(intent); } @Override protected BasePresenter createPresenter() { return null; } @Override protected void initData(Bundle savedInstanceState) { videoThumbUrl = getIntent().getStringExtra(Extras.VIDEO_THUMB_URL); videoUrl = "http://wdquan-space.b0.upaiyun.com/VIDEO/2018/11/22/ae0645396048_hls_time10.m3u8";// getIntent().getStringExtra(Extras.VIDEO_URL); //增加封面 ImageView imageView = new ImageView(this); imageView.setScaleType(ImageView.ScaleType.CENTER); if (!TextUtils.isEmpty(videoThumbUrl)) GlideUtil.loadDefaultUrl(this, videoThumbUrl, imageView); //标题和返回键设置 mDetailPlayer.getTitleTextView().setVisibility(View.GONE); mDetailPlayer.getBackButton().setVisibility(View.GONE); //外部辅助的旋转,帮助全屏 orientationUtils = new OrientationUtils(this, mDetailPlayer); //初始化不打开外部旋转 orientationUtils.setEnable(false); GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder(); gsyVideoOptionBuilder.setThumbImageView(imageView) .setIsTouchWiget(false) .setRotateViewAuto(false) .setLockLand(false) .setAutoFullWithSize(true) .setShowFullAnimation(false) .setNeedLockFull(true) .setUrl(videoUrl) .setCacheWithPlay(false) .setVideoAllCallBack(new GSYSampleCallBack() { @Override public void onPrepared(String url, Object... objects) { super.onPrepared(url, objects); //开始播放了才能旋转和全屏 orientationUtils.setEnable(true); isPlay = true; } @Override public void onQuitFullscreen(String url, Object... objects) { super.onQuitFullscreen(url, objects); if (orientationUtils != null) { orientationUtils.backToProtVideo(); } } }).setLockClickListener(new LockClickListener() { @Override public void onClick(View view, boolean lock) { if (orientationUtils != null) { //配合下方的onConfigurationChanged orientationUtils.setEnable(!lock); } } }).build(mDetailPlayer); mDetailPlayer.getFullscreenButton().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //直接横屏 orientationUtils.resolveByClick(); //第一个true是否需要隐藏actionbar,第二个true是否需要隐藏statusbar mDetailPlayer.startWindowFullscreen(VideoPreviewActivity.this, true, true); } }); } @Override protected void initView() { mDetailPlayer = (StandardGSYVideoPlayer) findViewById(R.id.detail_player); } @Override protected int getLayoutId() { return R.layout.activity_video_preview; } @Override public void onBackPressedSupport() { if (orientationUtils != null) { orientationUtils.backToProtVideo(); } if (GSYVideoManager.backFromWindowFull(this)) { return; } super.onBackPressedSupport(); } @Override protected void onPause() { mDetailPlayer.getCurrentPlayer().onVideoPause(); super.onPause(); isPause = true; } @Override protected void onResume() { mDetailPlayer.getCurrentPlayer().onVideoResume(false); super.onResume(); isPause = false; } @Override protected void onDestroy() { super.onDestroy(); if (isPlay) { mDetailPlayer.getCurrentPlayer().release(); } if (orientationUtils != null) orientationUtils.releaseListener(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); //如果旋转了就全屏 if (isPlay && !isPause) { mDetailPlayer.onConfigurationChanged(this, newConfig, orientationUtils, true, true); } } }