首页 > 其他分享 >Android View 绘制原理

Android View 绘制原理

时间:2024-03-13 16:01:26浏览次数:24  
标签:动画 视图 硬件加速 Android 绘制 重绘 View

在Android中,视图绘制原理是指系统如何创建、管理和更新用户界面上显示的各种视图(Views)的过程。以下是Android视图绘制的基本原理概述:

1. **视图层次结构**:
   - Android UI是由一系列嵌套的视图构成的层次结构,顶层通常是`DecorView`,它包裹着`ContentView`(即Activity的根视图)和其他窗口装饰元素。
   
2. **测量(Measure)**:
   - 在视图绘制之前,系统首先会对每个视图进行测量以确定其大小。视图会收到`onMeasure()`回调,基于自身的LayoutParams以及其他约束条件计算出自己的宽高。

3. **布局(Layout)**:
   - 测量完成后,系统会进行布局阶段,即确定每个视图在其父视图坐标系中的具体位置。这一过程通过`onLayout()`回调方法完成,视图会在此方法中定位其子视图的位置。

4. **绘制(Draw)**:
   - 布局完成后,系统开始绘制阶段。绘制流程始于顶级视图,并逐层向下传递至每一个需要重绘的视图。每个视图都会收到`onDraw()`回调方法,在这里视图会利用Canvas对象绘制自身的内容,包括背景、文字、图像等。

5. **Invalidation与重绘**:
   - 当视图的内容发生变化时,可以调用`invalidate()`方法请求重绘。这会导致视图及其需要的部分子视图被标记为“脏”,系统会在下一帧循环中重新执行上述测量、布局和绘制流程。

6. **双缓冲与硬件加速**:
   - Android为了提升绘制效率,采用双缓冲技术避免屏幕闪烁,同时支持硬件加速,通过GPU来加速图形渲染,提高界面绘制性能。

7. **视图动画**:
   - 对于动画效果,Android提供了视图动画机制,包括Tween动画和属性动画,这些动画可以在不改变视图的实际属性的情况下模拟视图的动态变化,并且在每次动画帧的过程中触发视图的重绘。

综上所述,Android视图的绘制是一个多阶段协同工作的过程,涉及到了系统的图形栈、硬件加速机制以及视图本身的方法回调等一系列技术和原理。

标签:动画,视图,硬件加速,Android,绘制,重绘,View
From: https://blog.csdn.net/weixin_34991050/article/details/136682959

相关文章

  • 【PR】Block-NeRF: Scalable Large Scene Neural View Synthesis
    【简介】 本文的作者来自UCBerkeley,Waymo和Google研究院,一听就是大佬。发表在CVPR2022。  【创新点】  【review】  【方法】   【结论】  【参考】TancikM,CasserV,YanX,etal.Block-nerf:Scalablelargesceneneuralviewsynth......
  • 2024年最受欢迎的Vue.js组件库 - ViewDesign全面解析
    引言作为现代Web开发不可或缺的一员,Vue.js以其轻量、高效、渐进式的理念备受开发者青睐。而在Vue.js生态系统中,第三方组件库则扮演着桥梁的角色,为开发者提供可复用的UI组件,从而极大提高了开发效率。在2024年,有许多优秀的Vue组件库脱颖而出,但毫无疑问,ViewDesign因其卓越的......
  • Android Studio开发学习(一)———下载安装
    AndroidStudio版本:android-studio-2023.2.1.23-windows安装AndroidStudio官网下载   androidstudio官网安装AndroidStudio在安装目标盘创建文件夹,不要有中文文件夹,文件夹名称不要带空格。本次安装在VMware虚拟机中安装,只有一个C盘,无其他盘,所以自定义安装目录都在C......
  • Android开发window安装Ubuntu虚拟机编译aosp安卓12源代码
    Window安装Ubuntu虚拟机编译aosp安卓12源代码1.安装VMWare虚拟机,以及安装Ubuntu1.1下载安装VMWare虚拟机下载地址和密钥,请见:https://www.cnblogs.com/yongfengnice/p/17413934.html1.2下载安装Ubuntuubuntu下载地址:https://ubuntu.com/download/alternative-dow......
  • aardio 背景透明的3种方式(透明窗体1 webview2,透明窗体2-win-region-bitmap,透明窗体3-w
    3种透明模式我给起个名字,也好记忆。透明模式1:浏览器模式透明模式2:位图遮罩模式透明模式3:背景透明模式aardio背景透明的3种方式(透明窗体1webview2,透明窗体2-win-region-bitmap,透明窗体3-winform-transparent-color)3种透明窗体,主要分成是否可以穿透,遮罩组件,全部显示。透明......
  • 【嵌入式】从混乱到秩序:Code-Review代码审查助力代码质量飞跃(提供完整审查项checklist
    ......
  • 使用 Keras 和 ArcGIS Pro 通过 Mask-RCNN/DeepLabV3+ 进行 EagleView 高分辨率图像语
            机器学习中的计算机视觉为GIS提供了巨大的机会。其任务包括获取、处理、分析和理解数字图像的方法,以及从现实世界中提取高维数据以产生数字或符号信息,例如以决策的形式。在过去的几年中,计算机视觉越来越多地从传统的统计方法转向最先进的深度学习神经网络技......
  • 用QT开发Android投屏软件--上传文件和安装apk
    这篇文章我们给Android投屏软件增加文件上传和安装apk的功能。上传文件和安装apk对pc端的操作基本没有差别,因为apk也是一种文件格式。通过点击按钮或者拖动待上传(安装)的文件到投屏窗口,软件获取到文件路径,执行不同的adb命令。上传文件的adb命令:adb-s设备序列号push<电......
  • LabVIEW中引用的概念及在VI间传递值
    一引用的概念LabVIEW中有一个重要概念:引用。引用的本质是一个临时指针,它可以指向一个具体的对象,并为其分配内存空间,是对象在程序中的唯一标识。尽管LabVIEW不是纯粹面向对象的语言,但引用的概念与其它面向对象的语言,例如:C++,基本相同。我们可以把LabVIEW中的控件、VI、应用程......
  • Android Framework基础知识
    哈喽大家好,我是Zzz.给大家分享一篇Framework入门的基础知识文章,内容纯纯原创。一、Application,Activity和进程的关系?  Application、Activity只是进程虚拟机运行的一个类对象,只是属于系统的一个组件和进程没有直接联系。Android支持为每个组件可以单独进程方式运行。 ......