仿微信小视频播放控件

变量如下:

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

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

完整代码请看:仿微信小视频播放控件

时间: 2024-08-24 07:35:46

仿微信小视频播放控件的相关文章

JCameraView 仿微信拍照Android控件(点击拍照,长按录小视频)

JCameraView 控件介绍 这是一个模仿微信拍照的Android开源控件,主要的功能有如下: 点击拍照. 前后摄像头的切换. 长按录视频(视频长度为10秒内). 长按录视频的时候,手指上滑可以放大视频. 录制完视频可以浏览并且重复播放. 可以设置小视频保存路径. 示例截图 GIF图略有卡顿 使用步骤 Android Studio 添加下列代码到project gradle allprojects { repositories { jcenter() maven { url 'https:/

Android开发技巧——定制仿微信图片裁剪控件

拍照--裁剪,或者是选择图片--裁剪,是我们设置头像或上传图片时经常需要的一组操作.上篇讲了Camera的使用,这篇讲一下我对图片裁剪的实现. 背景 下面的需求都来自产品. 裁剪图片要像微信那样,拖动和放大的是图片,裁剪框不动. 裁剪框外的内容要有半透明黑色遮罩. 裁剪框下面要显示一行提示文字(这点我至今还是持保留意见的). 在Android中,裁剪图片的控件库还是挺多的,特别是github上比较流行的几个,都已经进化到比较稳定的阶段,但比较遗憾的是它们的裁剪过程是拖动或缩放裁剪框,于是只好自己

微信小程序控件 横/纵向排列

控件(按钮)横向排列 wxss 1 .view_class { 2 display: flex; 3 flex-direction: row; 4 justify-content: center; 5 } 控件(按钮)纵向排列 wxss 1 .view_class { 2 flex-direction: column; 3 justify-content: center; 4 } 效果图:(wxml是一个view内嵌 3个button组件) 原文地址:https://www.cnblogs.co

仿微信小视频录制控件

本文为用 MediaRecorder 录制小视频的控件,可以设置视频录制的时间.空间大小.初始时是否打开摄像头等. 此控件为组合控件,继承自 LinearLayout ,为防止出错,需实现 android.media.MediaRecorder.OnErrorListener 接口. 1. [文件] MovieRecorderView.java ~ 9KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2

前端心得---仿IOS拾取器控件(转轮控件)

希望做一个类似IOS拾取器的控件,在IOS上该控件的效果是这样的:,我也把该效果称之为为轮子效果. 要实现这个效果,能够用到的技术点非常简单,无非是transform的translate3d和rotate,不过要想很好的实现,还要建立一个精确的数学模型,来解决如何[摆放]的问题.特别是这个效果不是静态的,需要满足鼠标滑动的时,这个轮子要转起来,这就需要仔细思索了.当然,在最开始重点还是要搞清楚自变量是什么.因变量是什么.它们之间的关系是什么以及该需求的一些性质.找到了好的性质,可以减轻工作量,并

高仿IOS7日期选择控件

高仿IOS7日期选择控件 高仿IOS7.QQ等日期选择控件,滑动选择,高端大气上档次,可直接运用于项目中... 下载地址:http://www.devstore.cn/code/info/965.html 运行截图:   

玩转Android之在线视频播放控件Vitamio的使用

其实Android中自带的MediaPlayer本身就能播放在线视频,MediaPlayer结合SurfaceView播放在线视频也是不错的选择(如果你没有性能或者用户体验上的要求),关于MediaPlayer+SurfaceView播放在线视频我后面会给筒子们详细介绍,这里我想先说一下一个第三方的视频播放控件Vitamio的使用,这个控件用起来还是非常方便的,而且性能也不错,OK,废话不多说,先来看看我们今天的一个效果图. OK,这是一段网络视频,当视频处于缓冲状态时,会提示用户目前缓冲的百分

基于Bootstrap仿淘宝分页控件实现

.header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { text-align: center; margin-top: 20px; margin-left: 10px; margin-bottom: 20px } a { cursor: pointer; text-decoration: none; color: gray } a:hover { text

Android高级_视频播放控件

一.Android系统自带VideoView控件 1. 创建步骤: (1)自带视频文件放入res/raw文件夹下: (2)声明初始化VideoView控件: (3)创建视频文件Uri路径,Uri调用parse(),传入(”android.resource://”+getPackageName()+”/”+R.raw.video)当前字符串获取资源路径: (4)为视频控件设置播放路径,VideoView对象调用setVideoURI(),传入Uri对象: (5)开始播放,VideoView对象调用