This control inherits from SurfaceView and uses MediaPlayer to play videos.
Small video playback interface
MoviePlayerView.java
import java.io.IOException;import android.content.Context;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.util.AttributeSet;import android.view.SurfaceHolder ;import android.view.SurfaceHolder.Callback;import android.view.SurfaceView; /** * Video playback control *@author liuyinjun * @date 2015-2-8 */public class MoviePlayerView extends SurfaceView { private SurfaceHolder mSurfaceHolder; private MediaPlayer mPlayer; public MoviePlayerView(Context context) { this(context, null); } public MoviePlayerView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public MoviePlayerView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mSurfaceHolder = this.getHolder(); mSurfaceHolder.addCallback(mSurfaceHolderCallback); // holder joins the callback interface mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS) ;// setType must be set, otherwise there will be no errors. } /** * Play video * @param fileName file path */ public void play(String fileName, final OnPlayCompletionListener completionListener) { mPlayer = new MediaPlayer(); mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC) ; mPlayer.setDisplay(mSurfaceHolder); // Define a SurfaceView to play it mPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer arg0) { stop(); if(completionListener != null) completionListener.onPlayCompletion(); // canvas.drawColor(Color.TRANSPARENT , // PorterDuff.Mode.CLEAR); } }); try { mPlayer.setDataSource(fileName); mPlayer.prepare(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e .printStackTrace(); } mPlayer.start(); } private void stop() { if (mPlayer != null) { mPlayer.release(); mPlayer = null; } } /** * Release resources*/ public void release() { if (mPlayer != null) { mPlayer.release(); mPlayer = null; } } private Callback mSurfaceHolderCallback = new Callback() { @ Override public void surfaceDestroyed(SurfaceHolder arg0) { mSurfaceHolder = null; } @Override public void surfaceCreated(SurfaceHolder arg0) { // TODO Auto-generated method stub mSurfaceHolder = arg0; } @Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub mSurfaceHolder = arg0; } }; /** * Playback success callback *@author liuyinjun * @date 2015-2-9 */ public interface OnPlayCompletionListener{ public void onPlayCompletion(); } }The above is the entire content of this article, I hope you all like it.