Android 原生绘制

SurfaceView 与 TextureView 详解 播放视频或者渲染其他的动画的时候,有两个 View 组件可供选择,SurfaceView 和 TextureView。在 Android 7.0 上系统 Surfaceview 的性能比 TextureView 更有优势,支持对象的内容位置和包含的应用内容同步更新,平移、缩放不会产生黑边。 在7.0以下系统如果使用场景有动画效果,可以选择性使用TextureView。 阅读详情

SurfaceView

​ Activity的View hierachy的树形结构,最顶层的DecorView,也就是根结点视图,在SurfaceFlinger中有对应的Layer。
​ 对于具有SurfaceView的窗口来说,每一个SurfaceView在SurfaceFlinger服务中还对应有一个独立的Layer,用来单独描述它的绘图表面,以区别于它的宿主窗口的绘图表面。

​ 在WMS和SurfaceFlinger中,它与宿主窗口是分离的。这样的好处是对这个Surface的渲染可以放到单独线程去做。这对于一些游戏、视频等性能相关的应用非常有益,因为它不会影响主线程对事件的响应。但它也有缺点,因为这个Surface不在View hierachy中,它的显示也不受View的属性控制,所以不能进行平移,缩放等变换,一些View中的特性也无法使用。=在这里插入图片描述
优点:

​ 可以在一个独立的线程中进行绘制,不会影响主线程。

​ 使用双缓冲机制,播放视频时画面更流畅。

缺点:

​ Surface不在View hierachy中,显示也不受View的属性控制,所以不能进行平移,缩放等变换。

双缓冲:两张Canvas,一张frontCanvas和一张backCanvas,每次实际显示的是frontCanvas,backCanvas存储的是上一次更改前的视图,当使用lockCanvas()获取画布,得到的backCanvas而不是正在显示的frontCanvas,之后在获取到的backCanvas上绘制新视图,再unlockCanvasAndPost更新视图,上传的这张canvas将替换原来的frontCanvas作为新的frontCanvas,原来的frontCanvas将切换到后台作为backCanvas。
TextureView

​ 在4.0(API level 14)中引入。和Surfa

ANativeWindow 和 Surface Android播放视频从解码到显示实质也是BufferQueue的生产消费的过程,如下图所示: 其中生产者是Surface,消费者是SurfaceFlinger。 本文主要针对Surface进行分析,理清ANativeWindow 和 Surface之间的关系。 ANativeWindow的定义如下: // 代码位置 frameworks/native/libs/nativewind... 阅读详情

相关推荐

反思:Google 为何把 SurfaceView 设计的这么难用?

的绘图表面所使用的图形缓冲区是完全由摄像头服务或者视频播放服务来提供的,因此,我们就不可以随意地去访问该图形缓冲区,而是要由摄像头服务或者视频播放服务来访问,因为该图形缓冲区有可能是在专门的硬件里面分配的。但在实际开发中,随着业务场景复杂度的上升,仍然有部分场景是无法被满足的,比如:在页面的最上方播放一条全屏的视频广告。相关的操作,放在不同的线程中执行,而多线程对这一块内存区域的读写,势必会引发内部状态的混乱。的设计中,设计者还考虑到了音视频渲染时,字幕相关业务的场景,因此额外提供了一个。

Trouvailless的博客 1554

Android笔记:在Flutter中嵌入原生View,12个View绘制流程高频面试题

第一次观看我文章的朋友,可以关注、点赞、转发一下,每天分享各种干货技术和程序猿趣事 由于涉及到的面试题较多导致篇幅较长,我根据这些面试题所涉及到的常问范围总结了并做出了一份学习进阶路线图​​​​​​​及面试题答案免费分享给大家,文末有免费领取方式! 首先是MainActivity的布局文件,上面一个FrameLayout用于承载Flutter。 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.Cons.

m0_69440446的博客 529

Android原生实现Google Maps两点导航路线绘制

在移动开发中,地图导航路线绘制是位置服务的核心能力之一,其本质是将地理坐标序列转化为可渲染的矢量路径。该过程涉及坐标校验、网络请求、JSON解析、线程调度与GPU渲染等多个技术环节,需兼顾精度、性能与兼容性。尤其在Android平台,Google Maps SDK与Directions API的协同使用存在诸多隐性约束,如地图初始化时机、Polyline宽度单位适配、坐标精度截断、geodesic大地线启用等关键原理。掌握这些底层机制,不仅能规避白屏、偏移、卡顿等高频线上问题,还可支撑实时交通叠加、多模式路

weixin_33859231的博客 582

安卓学习笔记04:安卓平台架构

安卓体系架构、安卓设备监视器、安卓调试桥ADB

howard2005的专栏 3328

Android 自定义折线图实现教程

前言: 各位同学大家好,有段时间没有给大家更新文章了,具体多久我也记不清楚了。最近重新复习了一下原生安卓的知识点,写了一个安卓原生自定义折线图的效果,就想着分享给大家。希望帮助到各位学习和工作,那份废话不多说我们正式开始。 效果图: 具体实现 自定义 :BrokenView private Context mContext; private int bWidth,bHeight; // 左边距 除去下边距的距离 private int totalValue, pJValue;

xq610928的博客 1667

Android原生环境下RPG游戏地图绘制实战

htmltable {th, td {th {pre {简介:在Android平台开发RPG游戏时,地图绘制是核心环节之一。本文围绕如何利用Tiled地图编辑器生成的TMX资源,在原生Android环境中实现高效的地图渲染展开讲解。通过使用SurfaceView进行高性能图形绘制,并结合XML解析技术加载Tiled地图数据,开发者可构建多层、可交互的2D游戏场景。

weixin_35762258的博客 948

Android原生抽奖转盘实现:Canvas绘制+属性动画+权重随机

抽奖转盘是移动端常见的交互组件,其核心涉及自定义View绘制、Canvas图形渲染、属性动画控制及概率权重分配等关键技术。基于Android原生开发,通过继承View并重写onDraw方法实现动态扇形绘制,利用ValueAnimator驱动旋转动画,结合累积权重数组与二分查找完成「真随机」停靠,兼顾性能与可扩展性。该方案规避了WebView套壳或静态图片加载的局限,支持低至Android 4.0(API 14)运行,适用于营销活动、用户激励等真实业务场景,尤其适合需要深度定制与状态可控的工程化落地需求。

weixin_29189381的博客 187

Android原生Java推箱子课设:Canvas绘制+触摸响应+状态持久化

推箱子(Sokoban)作为经典逻辑游戏,是移动应用开发课程中检验Android核心组件能力的典型载体。其本质涉及Activity生命周期管理、View自定义绘制原理、基于MotionEvent的触摸事件解析机制,以及SharedPreferences等轻量级持久化技术。在工程实践中,Canvas手动绘制替代XML布局可精准控制渲染性能,onTouchEvent方向判定算法体现交互设计合理性,而关卡数据加载与进度自动保存则验证了Android资源管理与状态维护能力。本方案面向高校《移动应用开发》《Andro

weixin_34438187的博客 177

Aras Innovator系统配置-01对象类(一)

对象类配置-对象类属性说明

企业信息化(PLM,ERP.MES) 2032

基于STM32的RS485土壤氮磷钾与PH传感器数据采集与OLED显示实战(附完整代码)

本文详细介绍了基于STM32单片机通过RS485协议采集土壤氮磷钾与PH传感器数据的实战项目。涵盖硬件选型、连接方法、Modbus-RTU通信协议解析、STM32程序实现及OLED显示,提供完整代码和调试技巧,适用于农业物联网环境监测系统。

kotlin6android的博客 334

ATE测试基础——直流参数测试

芯片测试在发展过程中诞生了许多术语,初次接触的人大部分都会被绕晕。因此为方便广大读者理解,在开始介绍测试项之前,需要对测试领域的名词进行解释。还有部分较为抽象的内容,需要略作展开。DUT——Device Under Test,正在被测试的器件Pin——器件引脚,信号引脚分为输入,输出,三态和双向四类,负责与外界进行信息交互;电源引脚分为电源和地两类,结构与信号引脚不同,负责给器件内部运行和外部输出提供电平。输入:在外部信号和器件内部逻辑之间起缓冲作用的信号输入通道;

你骄傲地飞远的博客 1万+

ANSYS命令流黑箱揭秘:流体渗透压力载荷的七种收敛优化策略

本文深入解析ANSYS Workbench中流体渗透压力载荷的七种收敛优化策略,重点探讨接触探测点迭代逻辑、PPCN阈值动态调整及FPAT参数优化等关键技术。通过命令流示例和实战技巧,帮助工程师有效解决流体与结构相互作用仿真中的收敛难题,提升计算效率和精度。

weixin_29274337的博客 520

【WRF-Urban数据集】 WRF 模型城市冠层参数 GloUCP 的使用

【数据集】 WRF 模型城市冠层参数 GloUCP 的使用

WW、forever的博客 478

Google Earth Engine:计算逐年全球潜在蒸发量(PET)的 ERA 数据

通过获取温度、湿度和降水数据,并使用Penman-Monteith公式,我们可以得到每年的潜在蒸发量。在本文中,我们将使用Google Earth Engine平台和ERA(欧洲再分析气象数据集)数据来计算逐年全球的潜在蒸发量(PET)。接下来,我们需要对ERA数据进行预处理,以获取我们需要的潜在蒸发量数据。有了温度、湿度和降水数据,我们可以使用Penman-Monteith公式来计算每年的潜在蒸发量。最后,我们可以将计算得到的潜在蒸发量数据进行可视化,以便更好地理解全球的水汽蒸发情况。

VwajAlgorithm的博客 730

高通Camx功能feature分析之十:高通NCS服务之注册和启动

本文介绍了高通NCS(非相机传感器)服务的注册与启动流程。NCS通过QMI接口访问陀螺仪等传感器,为相机EIS/AEC等功能提供辅助数据。文章详细解析了服务注册时的QueryCapabilites能力查询、RegisterService注册流程,以及通过StartNCSService启动服务线程的过程。重点包括:1)AF/EIS等节点通过NCSService创建传感器对象;2)注册时需校验传感器类型和接口;3)首次注册成功后会启动NCS服务线程;4)采样率变化时需重新配置会话。通过线程池管理实现传感器数据的

1261

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 2019年,BAT大厂Android 高级面试题及答案
下一篇: OpenCV 人脸跟踪
动脑学院[David]
博客等级 码龄8年 44粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值