首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SurfaceView TextureView 详解

在说 SurfaceView TextureView 之前,需要先说一下几个相关的部分。 Surface 简介 Surface 就是“表面”的意思,可以简单理解为内存中的一段绘图缓冲区。...SurfaceView直接输出相比,这样会有若干帧的延迟。同时,由于它本身管理BufferQueue,因此内存消耗也会稍微大一些。...SurfaceTexture 是从Android 3.0开始加入,SurfaceView不同的是,它对图像流的处理并不直接显示,而是转为GL外部纹理,因此用于图像流数据的二次处理。...SurfaceView直接输出相比,这样会有若干帧的延迟。同时,由于它本身管理BufferQueue,因此内存消耗也会稍微大一些。... SurfaceView 相比,TextureView 具有更出色的 Alpha 版和旋转处理能力,但在视频上以分层方式合成界面元素时,SurfaceView 具有性能方面的优势。

11.2K60
您找到你想要的搜索结果了吗?
是的
没有找到

Android  Surfaceview的绘制应用

Android Surfaceview的绘制应用 一.surfaceviewview的区别 Android 提供了view进行视图的绘制,可以满足大部分的会图需求,但在有些时候却是心有余而力不足。...它可以说是view的孪生兄弟,但他view还是不同的,他view的区别主要在一下几点: view 主要是用于主动更新的情况下,而surfaceview主要是用于被动更新的情况下,列如频繁的刷新。...view主要是通过主线程对界面进行刷新,而surfaceview主要是通过子线程对view进行刷新。 view在绘制时没有使用双缓冲机制,而surfaceview的底层是使用了双缓冲机制。...创建自定义的surfaceview,继承自surfaceview 。...以上就是Android Surfaceview的绘制应用的详细介绍,关于Android View的重写本站很多资料大家可以按需要查询,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

1.2K40

走进SurfaceView

答“当然不是啊,肯定不是啊…SurfaceView就是一个View啊…Surface是…” …… 紧接着脑海里就响起了我五月天的那首歌…“最怕空气突然安静…” 真是大写的尴尬啊,我想,是时候好好研究一下...是View的派生类,因此它本质上是一个View。...但普通View不同的是,它有自己的Surface ,在WMS中有对应的WindowState,在SurfaceFlinger中有Layer。...05 — 它们之间的关系 从设计模式的高度来看,Surface、SurfaceView和SurfaceHolder实质上就是广为人知的MVC,即Model-View-Controller。...Model就是模型的意思,或者说是数据模型,或者更简单地说就是数据,也就是这里的Surface;View即视图,代表用户交互界面,也就是这里的SurfaceView;SurfaceHolder很明显可以理解为

1.2K20

surfaceview详解

1.概念       SurfaceViewView类的子类,可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图视图。它的特性是:可以在主线程之外的线程中向屏幕绘图上。...在游戏开发中多用到SurfaceView,游戏中的背景、人物、动画等等尽量在画布canvas中画出。...2.实现方法 1)实现步骤     a.继承SurfaceView     b.实现SurfaceHolder.Callback接口 2)需要重写的方法 public void surfaceChanged...几个需要注意的方法: abstract void addCallback(SurfaceHolder.Callback callback);   // 给SurfaceView当前的持有者一个回调对象。...4)总结整个过程   继承SurfaceView并实现SurfaceHolder.Callback接口 ----> SurfaceView.getHolder()获得SurfaceHolder对象 --

1.8K90

什么是 SurfaceView

SurfaceView简介 简单的说SurfaceView就是一个有Surface的View里面内嵌了一个专门用于绘制的Surface,SurfaceView控制这个Surface的格式和尺寸以及绘制位置...SurfaceView就是在Window上挖一个洞,它就是显示在这个洞里,其他的View是显示在Window上,所以View可以显式在 SurfaceView之上,你也可以添加一些层在SurfaceView...传统View及其派生类的更新只能在UI线程,然而UI线程还同时处理其他交互逻辑, 这就无法保证view更新的速度和帧率了,而SurfaceView可以用独立的线程来进行绘制,因此可以提供更高的帧率,例如游戏...但是这也有缺点,因为这个Surface不在View hierachy中,它的显示也不受View的属性控制,所以不能进行平移、缩放等动画,它也不能放在其它ViewGroup中,SurfaceView不能嵌套使用...从Android7.0开始,SurfaceView的窗口位置与其他View渲染同步更新。 这意味着在屏幕上平移和缩放SurfaceView不会导致渲染失真。

1K11

Android中TextureViewSurfaceView用法区别总结

SurfaceView和TextureView均继承于android.view.View 与其它View不同的是,两者都能在独立的线程中绘制和渲染,在专用的GPU线程中大大提高渲染的性能。...但也有局限: 由于是独立的一层View,更像是独立的一个Window,不能加上动画、平移、缩放; 两个SurfaceView不能相互覆盖。...三、TextureView和SurfaceView都是继承自View类的,但是TextureView在Andriod4.0之后的API中才能使用。...在子线程中更新UI,个人认为能够在子线程中更新UI是上述两种View相比于View的最大优势。...并且,由于holder的存在,SurfaceView也不能进行像View一样的setAlpha和setRotation方法,但是对于一些类似于坦克大战等需要不断告诉更新画布的游戏来说,SurfaceView

1.7K20

android之surfaceview画图

C++层的Surface类的实现以及作用可以参考前面Android应用程序SurfaceFlinger服务的关系概述和学习计划这个系列的文章。         ...C++层的SurfaceControl类的实现以及作用同样可以参考前面Android应用程序SurfaceFlinger服务的关系概述和学习计划这个系列的文章。       ...由于这些消息都是Ui相关的,因此它们就需要在UI线程中处理,这样我们就可以推断出当前正在处理的ViewRoot对象是要应用程序进程的UI线程中创建的。...public int relayout(android.view.IWindow window, android.view.WindowManager.LayoutParams attrs,    int...Surface类的构造函数是通过调用另外一个成员函数init来创建成员变量mSurfaceControl所关联的C++层的SurfaceControl对象的。

1.9K100

聊聊SurfaceView和TextureView

播放视频或者渲染其他的动画的时候,有两个View组件可供选择,SurfaceView和TextureView,GLSurfaceView是SurfaceView是子类,这儿还是归类到SurfaceView...SurfaceView实现机制 双缓冲机制 TextureView实现机制 TextureView和SurfaceView的优缺点 1.SurfaceView实现机制 SurfaceView继承自View...双缓冲的优势非常明显: 提高渲染效率 可以避免刷新频率过高而出现的闪烁现象 3.TextureView实现机制 在Android4.0(API level 14)中引入,SurfaceView一样继承...和SurfaceView不同,不在WMS中单独创建窗口,而是作为View hierachy中的一个普通view,因此可以和其他普通View一样进行移动,旋转,缩放,动画等变化。...TextureView继承自View,它与其它的View一样在View hierachy中管理绘制。

3.8K21

SurfaceView的那点事儿

View之孪生兄弟-SurfaceView 概述 Android系统中提供了View进行绘图处理,View可以满足大部分的绘图需求,但是在某些时候却力不从心,特别是进行一些开发的时候。...---- SurfaceViewView的区别 SurfaceViewView的区别: View主要适用于主动更行的情况,而SurfaceView适用于被动更新,例如频繁的刷新。...View在主线程中对画面进行,而SurfaceView通常会在一个子线程中进行页面的刷新 View在绘图时没有使用双缓冲机制,而SurfaceView在底层实现了双缓冲机制 总之,如果你的自定义View...需要频繁刷新,或者刷新时处理的数据量比较大时,就可以考虑使用SurfaceView替代View了。...---- SurfaceView的使用 SurfaceView的使用虽然比View要复杂,但是SurfaceView在使用时有一套使用的模板代码,大部分的SurfaceView绘图操作都可以套用这样的模板代码来进行编写

68630

Android SurfaceView游戏开发示例

当我们需要开发一个复杂游戏的时候,而且对程序的执行效率要求很高时,View类就不能满足需求了,这时必须用SurfaceView类进行开发。...例如,对速度要求很高的游戏时,View类就不能满足需求了,这时必须使用SurfaceView类进行开发。例如,对速度要求很高的游戏,可以使用双缓冲来显示。...游戏中的背景、人物、动画等都需要绘制在一个画布(Canvas)上,而SurfaceView可以直接访问一个画布,SurfaceView 是提供给需要直接画像素而不是使用窗体部件的应用使用的。...每个Surface创建一个Canvas对象(但属性时常改变),用来管理View和Surface上的绘图操作。 ...this); setContentView(gameView); } } GameSurfaceView public class GameSurfaceView extends SurfaceView

97920

surfaceview的生命周期

界面布局和上一节的mp3基本一样,播放视频需要一个控件SurfaceView SurfaceView控件在内部维护了一个双缓冲的技术,使用两个线程进行解析帧和显示到界面上 在Activity的onCreate...对象调用setDataSource()方法,之前 调用MediaPlayer对象的setDisplay()方法,设置影片以SurfaceHolder的方式播放,参数:SurfaceHolder对象,调用SurfaceView...()方法,设置准备完成的监听器,在重写方法里,调用MediaPlayer对象的start()方法 在低版本的手机上,加上下面的代码,指定自己不维护缓冲区,等待MediaPlayer将数据推送出来 调用SurfaceView...当界面最小化不可见后,重新打开SurfaceHolder会被销毁,这是系统设计为了节省内存 当界面不可见的时候,应该记录播放位置并且停止掉,当重新可见的时候,重新打开 获取SurfaceHolder对象,调用SurfaceView

1.2K30
领券