このコントロールは SurfaceView から継承し、MediaPlayer を使用してビデオを再生します。
小型ビデオ再生インターフェース
MoviePlayerView.java
インポート java.io.IOException;インポート android.content.Context;インポート android.media.AudioManager;インポート android.media.MediaPlayer;インポート android.media.MediaPlayer.OnCompletionListener;インポート android.util.AttributeSet;インポート android.view.SurfaceHolder ;インポート android.view.SurfaceHolder.Callback;インポート android.view.SurfaceView; /** * ビデオ再生コントロール *@author liuyinjun * @date 2015-2-8 */public class MoviePlayerView extends SurfaceView { private SurfaceHolder mSurfaceHolder { this(context, null); } public MoviePlayerView(Context context, AttributeSet attrs) { this(context, attrs, 0) } MoviePlayerView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mSurfaceHolder.addCallback(mSurfaceHolderCallback); // ホルダーがコールバック インターフェイスに参加します mSurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS ) ;// setType を設定する必要があります。そうでない場合、エラーは発生しません。 } /** * ビデオの再生 * @param fileName ファイル パス */ public void play(String fileName, Final OnPlayCompletionListener completedListener) { mPlayer = new MediaPlayer.setAudioStreamType(); AudioManager.STREAM_MUSIC) ; mPlayer.setDisplay(mSurfaceHolder);再生する SurfaceView を定義します mPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer arg0) { stop(); if(completionListener != null)completeListener.onPlayCompletion(); // Canvas.drawColor(Color. TRANSPARENT , // PorterDuff.Mode.CLEAR) } }); mPlayer.setDataSource(fileName); mPlayer.prepare(); } catch (IllegalStateException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (IOException e) { // TODO 自動生成された catch ブロック e .printStackTrace(); } mPlayer.start(); } private void stop() { if (mPlayer != null) { mPlayer.release(); mPlayer = null; } } /** * リソースの解放*/ public void release() { if (mPlayer != null) { mPlayer.release() } } private Callback mSurfaceHolderCallback = new Callback();オーバーライド public void surfaceDestroyed(SurfaceHolder arg0) { mSurfaceHolder = null } @Override public void surfaceCreated(SurfaceHolder arg0) { // TODO 自動生成メソッド スタブ mSurfaceHolder = arg0; } @Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO 自動生成メソッド スタブ mSurfaceHolder = arg0; } };再生成功コールバック *@author liuyinjun * @date 2015-2-9 */ public Interface OnPlayCompletionListener{ public void onPlayCompletion() } }以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。