java制作仿微信视频播放控件
更新时间:2015年04月01日 10:37:25 投稿:hebedich
这篇文章主要介绍了java制作仿微信视频播放控件的方法和代码分享,控件继承自SurfaceView,十分的实用,小伙伴们可以自由扩展。
此控件继承自 SurfaceView,利用 MediaPlayer 播放视频。
小视频播放界面
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; /** * 视频播放控件 *@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加入回调接口 mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);// setType必须设置,要不出错. } /** * 播放视频 * @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(); } private void stop() { if (mPlayer != null) { mPlayer.release(); mPlayer = null; } } /** * 释放资源 */ 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; } }; /** * 播放成功回调 *@author liuyinjun * @date 2015-2-9 */ public interface OnPlayCompletionListener{ public void onPlayCompletion(); } }
以上所述就是本文的全部内容了,希望大家能够喜欢。
相关文章
使用Spring Initializr创建Spring Boot项目没有JDK1.8的解决办法
很久没创建springboot项目,今天使用idea的Spring Initializr 创建 Spring Boot项目时,发现java版本里,无法选择jdk1.8,只有17、21、22,所以本文介绍了使用Spring Initializr创建Spring Boot项目没有JDK1.8的解决办法,需要的朋友可以参考下2024-06-06Dubbo在Spring和Spring Boot中的使用详解
这篇文章主要介绍了Dubbo在Spring和Spring Boot中的使用详解,需要的朋友可以参考下2017-10-10java中为何重写equals时必须重写hashCode方法详解
这篇文章主要给大家介绍了关于java中为什么重写equals时必须重写hashCode方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2018-11-11Spring不能注入Static变量的原因及Spring注入静态变量
这篇文章主要介绍了Spring不能注入Static变量的原因及Spring注入静态变量,需要的朋友可以参考下2016-01-01SpringBoot详解整合Spring Boot Admin实现监控功能
这篇文章主要介绍了SpringBoot整合Spring Boot Admin实现服务监控,内容包括Server端服务开发,Client端服务开发其中Spring Boot Admin还可以对其监控的服务提供告警功能,如服务宕机时,可以及时以邮件方式通知运维人员,感兴趣的朋友跟随小编一起看看吧2022-07-07
最新评论