SurfaceView和SurfaceHolder
surfaceView:首先要了解视频一般是单位时间内显示大量的图片。例如常见的1秒内显示24张图片,surfaceView也是一样,surfaceView采用的是 缓冲机制,内部有两个子线程,他们的作用都是解码图像和前台显示,当A线程执行前台显示时,B线程在解码图像,B线程解码图像完成后开始前台显示,此时A线程又开始解码图像,就这样AB线程来回切换。
surfaceHolder类似电视的显示器,surfaceView类似电视机。可通过mediaPlayer.setDisplay(holder),让视频在surfaceView上显示。
可通过surfaceHolder的回调函数holder.addCallback来观察surfaceHolder的生命周期。当屏幕最小化时surfaceView会被销毁执行surfaceDestroyed方法,因此市面上的视频播放器一般的解决方法是,当surfaceView销毁时,停止播放,即执行mediaPlayer.stop(),并且执行mediaPlayer.getCurrentPosition();记录下当前播放的位置,当屏幕再次打开时执行surfaceCreated方法,surfaceHolder再次被创建,执行mediaPlayer.seekTo(position);从上次销毁时记录的位置开始播放。
参考:视频播放器
SurfaceView和SurfaceHolder相关推荐
- 【Android笔记60】Android之多媒体播放SurfaceView和SurfaceHolder介绍
这篇文章,主要介绍Android中和多媒体播放相关的两个类SurfaceView和SurfaceHolder. 目录 一.多媒体(视频播放) 1.1.Surface和SurfaceView (1)Su ...
- Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系
转载请包含网址:http://blog.csdn.net/pathuang68/article/details/7351317 一.Surface Surface就是"表面"的意思 ...
- android surfaceholder的数据,Surface、SurfaceView、SurfaceHolder详解
一.Surface Surface就是"表面"的意思.在SDK的文档中,对Surface的描述是这样的:"Handle onto a raw buffer that is ...
- surfacecontrol.java_简单说说JAVA层中Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系...
1.Surface Surface extends Object implements Parcelable java.lang.Object android.view.Surface Class O ...
- SurfaceView、SurfaceHolder与Surface
相关文章 SurfaceView.SurfaceHolder与Surface TextureView.SurfaceTexture与Surface 按照官方文档的说法,SurfaceView继承自Vi ...
- surfaceview 和surfaceholder的理解和使用
SurfaceView介绍 通常情况程序的View和用户响应都是在同一个线程中处理的,这也是为什么处理长时间事件(例如访问网络)需要放到另外的线程中去(防止阻塞当前UI线程的操作和绘制).但是在其他线 ...
- Android之——Surface、SurfaceView与SurfaceHolder.Callback初探
一.Surface Surface在SDK的文档中的描述是这样的:Handle onto a raw buffer that is being managed by the screen com ...
- SurfaceView surface SurfaceHolder制作简单的相机
简单的相机界面布局 <?xml version="1.0" encoding="utf-8"?> <android.support.desig ...
- View,SurfaceView,SurfaceHolder
View:对于绘画来说,最重要的步骤是重载 onDraw方法并且修改画布Canvas. SurfaceView:1,You can control the format of this surface ...
最新文章
- java 安装界面广告_用javascript实现仿163的js广告向下挤压页面的效果
- 虚拟机无法访问主机mysql_解决虚拟机linux端mysql数据库无法远程访问
- 5G 标准 — R17
- phpshe b2c商城系统配置nginx支持pathinfo和rewrite的写法
- Memtest86-7.1内存测试工具
- linux 指定库名 登录mysql_Linux下指定mysql数据库数据配置主主同步的实例
- 如何备份和还原您的Kubernetes集群资源和持久卷?
- 打开d盘由于这台计算机的限制,又出现限制我想打开D盘、E盘,就是打不开,电脑提示:限制本 爱问知识人...
- js中 var a= b || c;
- java中数组输出空格_如何使用数字元素和空格分割字符串并将其存储到Java中的可索引数组中?...
- op手机突然显示无服务器,op手机 云服务器
- iOS8 UIAlertView键盘闪一下的问题
- 计算机WIN7动态硬盘分区,如何创建Win7虚拟磁盘分区
- android 视频上传网络异常,App上传视频(或大文件)失败怎么办?
- SCC(五):ACT
- //菱形,内藏十字架
- 微信小程序Day2学习笔记
- 单片机指令MOV、MOVC、MOVX的区别与联系
- 计算机组成原理——8086 CPU寄存器
- 【转】初探计算机视觉的三个源头、兼谈人工智能
热门文章
- 武汉BOTOX瘦脸好不好
- 【棋盘问题】-马走日
- 代码随想录算法训练营第七天| 454.四数相加II 、383. 赎金信、15. 三数之和、18. 四数之和
- Can‘t resolve ‘element-plus/lib/el-button‘报错
- Android Gradle Task详解
- mybatis if标签判断字符串是否相等
- SharePoint 企业搜索-PowerShell
- 堆叠之实战,两台交换机一根堆叠线如何做堆叠?三台交换机三根堆叠线呢?
- 华为交换机ssh远程登录配置命令
- Pytorch model.train()