话不多说,直接上代码:
public class BgView extends TextureView implements TextureView.SurfaceTextureListener { private MediaPlayer mMediaPlayer; private Context context; public BgView(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; initView(); } public BgView(Context context) { this(context, null); } public void stopPlay() { if (mMediaPlayer != null) { mMediaPlayer.stop(); mMediaPlayer.release(); mMediaPlayer = null; } } private void initView() { setSurfaceTextureListener(this); } @Override public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int i, int i2) { Surface surface = new Surface(surfaceTexture); try { mMediaPlayer = new MediaPlayer(); AssetFileDescriptor fileDescriptor = context.getAssets().openFd("bgvideo.mp4"); mMediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(), fileDescriptor.getStartOffset(), fileDescriptor.getLength()); mMediaPlayer.setSurface(surface); mMediaPlayer.setLooping(true);//循环播放 mMediaPlayer.prepareAsync();//异步加载 //当MediaPlayer已经准备结束的时候 mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { if (!mMediaPlayer.isPlaying()) { mMediaPlayer.start(); } } }); } catch (Exception e) { e.printStackTrace(); } } @Override public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, int i, int i2) { } @Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) { return true; } @Override public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) { } }