android仿微信小视频插件,仿微信小视频播放控件

效果图如下:

1a72d8a493f9f871b6cd33e41d414d64.png

变量如下:

private SurfaceHolder mSurfaceHolder;

private MediaPlayer mPlayer;

构造函数内获取 SurfaceHolder,并设置回调接口 Callback:

public MoviePlayerView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

mSurfaceHolder = this.getHolder();

mSurfaceHolder.addCallback(mSurfaceHolderCallback); // holder加入回调接口

mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);// setType必须设置,要不出错.

}

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;

}

};

自定义视频播放成功回调接口:

/**

* 播放成功回调

* @date 2015-2-9

*/

public interface OnPlayCompletionListener{

public void onPlayCompletion();

}

通过设置 MediaPlayer 播放视频:

/**

* 播放视频

* @param fileName 文件路径

*/

public void play(String fileName, final OnPlayCompletionListener completionListener) {

mPlayer = new MediaPlayer();

mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

mPlayer.setDisplay(mSurfaceHolder); // 定义一个SurfaceView播放它

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();

}

至此,主要代码已贴出,其实相比视频录制(请看另一篇 仿微信小视频录制控件),视频播放相对简单,相信童鞋们一下就可以看明白。

最近在运营一个有关反脆弱成长的个人公众号,欢迎关注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值