博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android性能优化Google课程翻译一:Render----OverDraw实战
阅读量:6514 次
发布时间:2019-06-24

本文共 691 字,大约阅读时间需要 2 分钟。

Context

近期实战了下OverDraw,加深了下理解。在上篇文章里

写过详细方法。

OverDraw解决方法离不开View。给我的感觉好像是加了层View就会加一层。但本质上如名字OverDraw,还是和Draw有关系。和几层View没关系。

例如以下实例:

Button

例如以下图, 书架和书城是一个Button,然后我把书架的Button

findViewById(R.id.main_jump_shelf).setBackgroundDrawable(null);

就发现书架少了一层。正常Button绘制了两次。一次是background,第二次是文字。

我猜測在底层应该是刷新了两次????

也就是普通Button 1个View---》2次绘制。

ImageView

而那个分享的图标是ImageView,我给ImageView加上Background就变成2次了。从蓝色变成了绿色。

也就是普通ImageView 1个View----》1次绘制

ImageView加background 1个View-----》2次绘制

TextView

而假设一个TextView指定了大小,可是没有文字。那他就是一次绘制也没有。

也就是普通无文字View----》0次绘制

GLSurfaceView

由于GLSurfaceView特殊,不在View Hierarchy(View的树形结构内),所以他不显示过度绘制。

总结:

也就是说OverDraw。仅仅和绘制有关系,绘制的实际反映是背景色和其它的文字等。View仅仅是这个操作的封装类。看似有一对一的关系。实际上不是。

你可能感兴趣的文章
caffe blob理解
查看>>
特殊字符校验
查看>>
GCC 中 -L、-rpath和-rpath-link的区别
查看>>
RedHat7下PostGIS源码安装
查看>>
亚马逊AWS学习——VPC里面几个概念的关系
查看>>
context.getSystemService的简单说明
查看>>
php中的正则函数:正则匹配,正则替换,正则分割 所有的操作都不会影响原来的字符串....
查看>>
三个小时学会wordpress模板制作
查看>>
【网络协议】TCP协议简单介绍
查看>>
利用SMB jcifs实现对windows中的共享文件夹的操作
查看>>
Spring(十七):Spring AOP(一):简介
查看>>
html5常用属性text-shadow、vertical-align、background如何使用
查看>>
微软正式宣布Azure MongoDB Atlas免费方案
查看>>
Jessica Kerr:高绩效团队简史
查看>>
开发者需要知道的有关软件架构的五件事
查看>>
GitLab 9提供了子群组、部署面板和集成监控
查看>>
继爆款超级账本后,IBM再次推出新产品
查看>>
贝壳金控赵文乐:基于 Spring Cloud 的服务治理实践
查看>>
Pyspider框架 —— Python爬虫实战之爬取 V2EX 网站帖子
查看>>
区域生长算法 C++实现
查看>>