TextureView和SurfaceView

2023-10-29 10:52
文章标签 surfaceview textureview

本文主要是介绍TextureView和SurfaceView,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、Surface
Surface对应了一块屏幕的缓冲区,每一个window对应一个Surface,任何View都是画在Surface上的,传统的View共享一块屏幕缓冲区,所有的绘制都必须在UI线程上进行。

2、SurfaceView
顾名思义就是Surface的View,通过SurfaceView就可以看到Surface的部分或者全部的内容。也就是说,Surface是用通过SurfaceView才能展示其中的内容。

3、SurfaceView特点
从面的图片可以看到SurfaceView自带一个Surface,这个Surface在WMS中有自己对应的WindowState,在SF中也会有自己的Layer。

SurfaceView的工作方式就是创建一个置于应用窗口之后的新窗口。这使得SurfaceView的绘制和刷新可以在单独的线程中进行,从而大大提高效率,并且SurfaceView窗口刷新的时候不需要重绘应用程序的窗口(android普通窗口的视图绘制机制是一层一层的,任何一个子元素或者是局部的刷新都会导致整个视图结构全部重绘一次,因此效率非常低下,不过满足普通应用界面的需求还是绰绰有余)。

但是因为SurfaceView的内容不在应用窗口上,所以不能使用变换(平移、缩放、旋转等)。也难以放在ListView或者ScrollView中,不能使用UI控件的一些特性比如View.setAlpha()。

界面层级.png

4、TextureView
TextureView是在4.0(API level 14)引入的,与SurfaceView相比,它不会创建新的窗口来显示内容。它是将内容流直接投放到View中,并且可以和其它普通View一样进行移动,旋转,缩放,动画等变化。TextureView必须在硬件加速的窗口中使用(API 级别为 14 及更高级别,硬件加速默认处于启用状态)。

TextureView占用内存比SurfaceView高,耗电也高,绘制会有一定延迟,在5.0以前在主线程渲染,5.0以后有单独的渲染线程。

SurfaceView及TextureView区别
Android中使用TextureView播放视频

这篇关于TextureView和SurfaceView的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/300170

相关文章

Android -- 视频音频多媒体播放,在线播放, MediaPlayer, SurfaceView, SoundPool, Timer定时器使用

1. SoundPool 用于快速重复的播放短音频 [java]  view plain copy public class MainActivity extends Activity {       private SoundPool soundPool;       private int soundId;          @Override       protec

Android Camera系列(一):SurfaceView+Camera

心行慈善,何需努力看经—《西游记》 本系列主要讲述Android开发中Camera的相关操作、预览方式、视频录制等,项目结构代码耦合性低,旨在帮助大家能从中有所收获(方便copy :) ),对于个人来说也是一个总结的好机会 一. Camera操作 Android系统存在这么多年,google更新了不少API。光是对摄像头的操作目前就有3中API: android.hardware

Android SurfaceView 播放视频 根据视频尺寸自适应播放

问题:我是用surfaceView+MediaPlay 播放本地上传的视频            但是由于视频尺寸不一致 有些视频播放会变形   (写个博客记录下开发时碰到的问题) 解决方案:视频尺寸会自动填充surfaceView,所以想要调整视频尺寸 修改surfaceView就好了。                  通过监听mediaplayer的回调函数“onVideoSizeCh

利用SurfaceView实现转盘抽奖

标签(空格分隔): android 1.什么是SurfaceView? 其实SurfaceView只是view的一个子类,但是他没有onDraw()方法。 SurfaceView和view最大的一个区别就是view是在UI线程中绘制的,而SurfaceView会在子线程中绘制。从而避免UI线程的阻塞,一般在有线开发中使用的比较多。 我猜你会问没有onDraw()方法那我们怎么来绘制Su

Surfaceview调用Camera实现拍照

一、Surfaceview的使用        surfaceView的使用主要有三步:继承SurfaceView;获取SurfaceViewHolder;应用Holder更新展示内容。Surfaceview的应用有常用类型及数据展示的Demo。        拍照功能实现思路: <span style="font-size:18px;">1,依据布局,获取Surfaceview对象;2,获

SurfaceView的应用

一,SurfaceView的初识        android游戏开发中常用的三种视图是:view、SurfaceView和GLSurfaceView   View:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面,速度较慢。   SurfaceView:基于view视图进行拓展的视图类,更适合2D游戏的开发;是view的子类,类似使用双缓机制,在新的线

关于使用SurfaceView绘制同名背景为黑色解决方法

在继承SurfaceView绘制图片时,图片透明的部分出现了黑色,找了很多方法,都无效, 后来通过设置  seZOrderOnTop(true)  解决了。 本意是将其放到画布的最顶层,这样我的问题就解决了

SurfaceView内存怎么销毁?

在Android中,SurfaceView是一个特殊的视图,用于处理高性能视频或图形渲染,通常与Camera或自定义动画等场景配合使用。由于SurfaceView涉及到硬件层的资源管理,因此销毁和重建过程需要特别注意以确保资源正确释放和避免内存泄漏。以下是销毁SurfaceView的一般步骤: 1.解除监听器: 如果你设置了SurfaceHolder.Callback,记得在不再需要Surface

Android开发系列:高性能视图组件Surfaceview

一、Surfaceview概述 在Android应用开发领域,面对视频播放、游戏构建及相机实时预览等高性能需求场景,直接操控图像数据并即时展示于屏幕成为必要条件。传统View组件在此类情境下显现局限性: 性能瓶颈:传统View的绘制任务由UI主线程承担,如果绘制操作过于复杂或需要频繁刷新,就可能导致主线程阻塞,进而影响界面的响应速度和用户交互体验。视觉瑕疵:传统View组件缺乏双缓冲技术的支持

android SurfaceView实现视频播放

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent"android:layout_height=