Android|Android UniversalVideoView实现视频播放器

本文实例为大家分享了Android UniversalVideoView实现视频播放器的具体代码,供大家参考,具体内容如下
Android|Android UniversalVideoView实现视频播放器
文章图片

Android|Android UniversalVideoView实现视频播放器
文章图片

1.添加依赖 app下的 build.gradle

dependencies { ...... compile 'com.linsea:universalvideoview:1.1.0@aar'}

【Android|Android UniversalVideoView实现视频播放器】2.XML布局

3.MainActivity
import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import com.universalvideoview.UniversalMediaController; import com.universalvideoview.UniversalVideoView; public class MainActivity extends Activity implements UniversalVideoView.VideoViewCallback{ private static final String TAG = "MainActivity"; private static final String SEEK_POSITION_KEY = "SEEK_POSITION_KEY"; private static final String VIDEO_URL = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"; //视频地址//http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4//http://vjs.zencdn.net/v/oceans.mp4//https://media.w3.org/2010/05/sintel/trailer.mp4 UniversalVideoView mVideoView; UniversalMediaController mMediaController; View mBottomLayout; View mVideoLayout; TextView mStart; private int mSeekPosition; private int cachedHeight; private boolean isFullscreen; private TextView tv_title; private LinearLayout titlebar; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_title = (TextView) findViewById(R.id.introduction); //titlebar = (LinearLayout) findViewById(R.id.titlebar); tv_title.setText("UniversalVideoView"); mVideoLayout = findViewById(R.id.video_layout); mBottomLayout = findViewById(R.id.bottom_layout); mVideoView = (UniversalVideoView) findViewById(R.id.videoView); mMediaController = (UniversalMediaController) findViewById(R.id.media_controller); mVideoView.setMediaController(mMediaController); //设置播放屏幕模式和设置播放地址setVideoAreaSize(); //设置屏幕状态和播放状态的监听mVideoView.setVideoViewCallback(this); mStart = (TextView) findViewById(R.id.start); mStart.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (mSeekPosition > 0) {mVideoView.seekTo(mSeekPosition); }mVideoView.start(); mMediaController.setTitle("Big Buck Bunny"); }}); mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {@Overridepublic void onCompletion(MediaPlayer mp) {Log.d(TAG, "onCompletion "); }}); mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {if (mSeekPosition > 0) {mVideoView.seekTo(mSeekPosition); }mVideoView.start(); }}); } @Overrideprotected void onPause() {super.onPause(); Log.d(TAG, "onPause "); if (mVideoView != null && mVideoView.isPlaying()) {mSeekPosition = mVideoView.getCurrentPosition(); Log.d(TAG, "onPause mSeekPosition=" + mSeekPosition); mVideoView.pause(); }} /*** 置视频区域大小*/private void setVideoAreaSize() {mVideoLayout.post(new Runnable() {@Overridepublic void run() {int width = mVideoLayout.getWidth(); cachedHeight = (int) (width * 405f / 720f); //cachedHeight = (int) (width * 3f / 4f); //cachedHeight = (int) (width * 9f / 16f); ViewGroup.LayoutParams videoLayoutParams = mVideoLayout.getLayoutParams(); videoLayoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT; videoLayoutParams.height = cachedHeight; mVideoLayout.setLayoutParams(videoLayoutParams); mVideoView.setVideoPath(VIDEO_URL); mVideoView.requestFocus(); }}); }//当屏幕发生改变的时候,如果要保持进度必须自己重写onSaveInstanceState方法@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState); Log.d(TAG, "onSaveInstanceState Position=" + mVideoView.getCurrentPosition()); outState.putInt(SEEK_POSITION_KEY, mSeekPosition); } @Overrideprotected void onRestoreInstanceState(Bundle outState) {super.onRestoreInstanceState(outState); mSeekPosition = outState.getInt(SEEK_POSITION_KEY); Log.d(TAG, "onRestoreInstanceState Position=" + mSeekPosition); } /*** 全屏和默认的切换* @param isFullscreen*/@Overridepublic void onScaleChange(boolean isFullscreen) {this.isFullscreen = isFullscreen; if (isFullscreen) {ViewGroup.LayoutParams layoutParams = mVideoLayout.getLayoutParams(); layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT; layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT; mVideoLayout.setLayoutParams(layoutParams); mBottomLayout.setVisibility(View.GONE); //全屏就隐藏标题栏//titlebar.setVisibility(View.GONE); } else {ViewGroup.LayoutParams layoutParams = mVideoLayout.getLayoutParams(); layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT; layoutParams.height = this.cachedHeight; mVideoLayout.setLayoutParams(layoutParams); mBottomLayout.setVisibility(View.VISIBLE); //竖直方法的时候,显示标题栏//titlebar.setVisibility(View.VISIBLE); }//switchTitleBar(!isFullscreen); } //private void switchTitleBar(boolean show) {//android.support.v7.app.ActionBar supportActionBar = getSupportActionBar(); //if (supportActionBar != null) {//if (show) {//supportActionBar.show(); //} else {//supportActionBar.hide(); //}//}//} @Overridepublic void onPause(MediaPlayer mediaPlayer) {Log.d(TAG, "onPause UniversalVideoView callback"); } @Overridepublic void onStart(MediaPlayer mediaPlayer) {Log.d(TAG, "onStart UniversalVideoView callback"); } @Overridepublic void onBufferingStart(MediaPlayer mediaPlayer) {Log.d(TAG, "onBufferingStart UniversalVideoView callback"); } @Overridepublic void onBufferingEnd(MediaPlayer mediaPlayer) {Log.d(TAG, "onBufferingEnd UniversalVideoView callback"); } @Overridepublic void onBackPressed() {if (this.isFullscreen) {mVideoView.setFullscreen(false); } else {super.onBackPressed(); }}}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    推荐阅读