Este controle é herdado do SurfaceView e usa o MediaPlayer para reproduzir vídeos.
Interface de reprodução de vídeo pequena
MoviePlayerView.java
importar java.io.IOException; importar android.content.Context; importar android.media.AudioManager; importar android.media.MediaPlayer; importar android.media.MediaPlayer.OnCompletionListener; importar android.util.AttributeSet; importar android.view.SurfaceHolder ;importar android.view.SurfaceHolder.Callback;importar android.view.SurfaceView; /** * Controle de reprodução de vídeo *@author liuyinjun * @date 2015-2-8 */public class MoviePlayerView estende 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); ) ;// setType deve ser definido, caso contrário não haverá erros. } /** * Reproduzir vídeo * @param fileName caminho do arquivo */ public void play(String fileName, final OnPlayCompletionListenercompleteListener) { mPlayer = new MediaPlayer(); AudioManager.STREAM_MUSIC) ;mPlayer.setDisplay(mSurfaceHolder); Defina um SurfaceView para reproduzi-lo mPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer arg0) { stop(); if(completionListener != null) completeListener.onPlayCompletion(); // canvas.drawColor(Color. TRANSPARENTE, // PorterDuff.Mode.CLEAR); mPlayer.setDataSource(fileName); mPlayer.prepare(); } catch (IllegalStateException e) { // Bloco catch gerado automaticamente TODO e.printStackTrace() } catch (IOException e) { // Bloco catch gerado automaticamente TODO e. .printStackTrace(); } mPlayer.start(); } private void stop() { if (mPlayer != null) { mPlayer.release(); mPlayer = null; } } /** * Liberar recursos*/ public void release() { if (mPlayer != null) { mPlayer.release(); Substituir public void surfaceDestroyed(SurfaceHolder arg0) { mSurfaceHolder = null } @Override public void; surfaceCreated(SurfaceHolder arg0) { // TODO stub de método gerado automaticamente mSurfaceHolder = arg0; } @Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO stub de método gerado automaticamente mSurfaceHolder = arg0; } }; Retorno de chamada de sucesso de reprodução *@author liuyinjun * @date 2015-2-9 */ public interface OnPlayCompletionListener{ public void onPlayCompletion();O texto acima é todo o conteúdo deste artigo, espero que todos gostem.