安卓图形系统理解起来并不容易。那是因为系统对于数据的封装非常多,图形模块与输入输出,应用程序管理等模块参杂在一起。让开发者很难摸清其中的脉络。下面先给出最简单的一张图。


 
          这张图是安卓系统的核心。就这张图来说,我不想说什么。如果不仔细看安卓源代码,是理解不了的。虽然上面的1,2,3,4,5,6这六大步骤很简单。可能是一句话的事情。但是对于不同的场景,调用的地方是不同的,使用的方法也是不同的。

1.问题

主要表现在以下几个方面:

1. 开启了硬件加速和没有开启硬件加速有什么不同?

2. SurfaceView和普通的View有什么不同,和GLSurfaceView呢?

3. TextureView的原理是什么?

4. Camera,视频播放器的实现原理与普通的View为什么不同?

5. 安卓动画框架都那些,有什么不同?

2.方法论

任何一个地方都是一个冰山。如何攻克这些冰山,就要从上到下全看明白。攻克冰山的方法:

1.从上层往底层看。

2.从底层向上层。

3.攻克最难的中间层。

而这最难的中间层,散布于framework的各个角落。最难的中间层将在最后进行学习。这个图形之路准备写100篇。下一篇将列一个具体的学习计划表。把这些大概的东西具体化。

  • 大小: 29.7 KB
  • 查看图片附件

安卓高手之路之 图形系统之 图形框架(1)相关推荐

  1. 安卓高手之路之图形系统(6)ListView继续

    综述: 本篇首先介绍了ListView的实现细节.然后介绍了Gallery,ListView,ViewPager的效率对比分析.以及效率低下的原因.最后给出了一些解决方案. 1.在上一篇讨论了requ ...

  2. 安卓高手之路之图形系统(6)requestLayout的流程

    当一个View调用requestLayout的时候,会给当前的View设置一个FORCE_LAYOUT标记.由此向ViewParent请求布局.这样从这个View开始向上一直requestLayout ...

  3. 安卓高手之路之图形系统【5】安卓ListView和EditText配合使用时的注意事项。

    ListView实现滚动和布局时的注意实现: 1.如何实现自动定位到底部: android:stackFromBottom="true" 这样ListView就可以实现从底向上增长 ...

  4. 安卓高手之路 图形系统(4 Measure的算法)

    安卓高手之路 图形系统(4 Measure的算法) - 修补C++ - ITeye技术网站 Java代码   /** * Does the hard part of measureChildren:  ...

  5. 安卓高手之路 图形系统(2)----------------基于Binder的架构思路)

    在学习安卓的时候最迷惑的就是Binder.图形框架的理解与Binder的理解分不开.前面一篇 [ 安卓高手之路之java层Binder 从代码角度分析了Java层Binder的实现原理.在C++层,这 ...

  6. 安卓高手之路之 ClassLoader

    我不喜欢那些泛泛而谈的去讲那些形而上学的道理,更不喜欢记那些既定的东西.靠记忆去弥补思考的人,容易陷入人云亦云的境地,最后必定被记忆所围困,而最终消亡的是创造力.希望这个高手之路系列能够记录我学习安卓 ...

  7. [js高手之路]打造通用的匀速运动框架

    本文,是接着上文[js高手之路]匀速运动与实例实战(侧边栏,淡入淡出)继续的,在这篇文章的最后,我们做了2个小实例:侧边栏与改变透明度的淡入淡出效果,本文我们把上文的animate函数,继续改造,让他 ...

  8. 安卓高手之路 图形系统(3 底层SurfceFlinger系统)

    底层SurfaceFLinger系统主要通过SurfaceTextureLayer进行绘图信息的传递.整个图花了几天时间,终于有所眉目.希望能给致力于研究SurfaceFlinger架构的人一些参考. ...

  9. [置顶] 安卓高手之路之ClassLoader(二)

    因为ClassLoader一定与虚拟机的启动有关系,那么必须从Zygote的启动开始看代码.下面就分析一下这些代码,行数不多: int main(int argc, const char* const ...

最新文章

  1. C语言中do...while(0)用法小结
  2. Mysql雨松工具类使用
  3. GridView 梆定一个实体类
  4. Ribbon源码解析(一)
  5. 实现基于虚拟用户的邮件系统架构
  6. [转]nginx+php-fpm.sock时504,502错误解决办法
  7. 《Single Image Haze Removal Using Dark Channel Prior》一文中图像去雾算法的原理、实现、效果及其他。...
  8. python读取配置文件获取所有键值对_Python读取properties配置文件操作示例
  9. Spring Security 理解小记
  10. python 如何封装dll_python怎么封装dll
  11. Pycharm主题,彩虹猫进度条,翻译插件
  12. PLC控制系统设计的基本原则和主要内容
  13. java车牌号识别EasyPR_EasyPR-Java
  14. 全流程电子化商事登记服务项目技术解决方案V1.0.1-10.13_-_评估稿
  15. 12306铁路订票系统小思
  16. python科学计算最佳实践_Python科学计算最佳实践:SciPy指南
  17. Fanuc机器人配置伺服焊枪完整步骤
  18. 点阵图(位图)与矢量图的区别
  19. 关于成为网络工程师后具体的工作内容的问题
  20. gcc/g++ 编译C/C++代码

热门文章

  1. java用爬虫爬一个页面_使用Java写一个简单爬虫爬取单页面
  2. r语言读取csv文件赋值gamma_tidyfst vs pandas(1):csv文件读写
  3. 手绘线条一直画不直_我学素描,线条画不直怎么办啊?
  4. 记录一下PyQt5界面导入Python(绕开pyqt5-tools安装失败问题)
  5. HALCON基于灰度值的模板匹配
  6. c语言程序设计分段定时器,单片机C语言程序设计:按键控制定时器选播多段音乐...
  7. Kubernetes初体验
  8. android.support-v7版本依赖配置
  9. 初识linux之文件管理
  10. 创建github账号