setAlpha与View Layer关系
如果开启了硬件加速,它们两者是没有关系的。一个先执行,一个后执行。
如果View Layer type is VIEW_LAYER_NONE, 生成display list,然后加上alpha送入GPU执行。
如果是VIEW_LAYER_SOFTWARE, 在软件层面生成layer(其实就是一个screen cache),然后加上alpha送入GPU执行。
如果是VIEW_LAYER_HARDWARE, 用GPU执行display list,然后加上alpha送入GPU执行。
如果没有动画,只是执行一遍,NONE和HARDWARE是没有区别的,甚至NONE会更快,因为不需要分配layer空间,也不需要把layer数据拷贝到GPU,所以默认是NONE的。
但如果有动画,这就有区别的,动画一般都是旋转,大小变化,alpha变化等等,是可以通过view cache(layer)+ alpha(或者其他)来组合到GPU执行的,每次动画只是在layer基础上做一次转换,GPU在处理这种情况是非常容易的。
因为考虑到layer分配和传输的消耗,只有当动画比较复杂的时候,也就是不能满足60fps的时候,才去考虑HARDWARE layer,因为在播放动画之前,需要调用所有view的buildLayer函数来生成layer。这将会有一个delay,如果生成一个displaylist所需要的数据传输不大(比如没有大图片,只是一些颜色,path之类的简单数据),HARDWARE是绝佳选择。
如果想更快的提高速度,提前buildLayer,动画的时候速度嗖嗖的。
setAlpha与View Layer关系的更多相关文章
- self.view.layer.contents 和 self.view.backgroundColor
一. self.view.layer.contents 和 self.view.backgroundColor 今天测了一下 : self.view.layer.contents 和 self. ...
- Activity Window View的关系
http://blog.csdn.net/chiuan/article/details/7062215 http://blog.163.com/fenglang_2006/blog/static/13 ...
- 动态加载Layout 与 论Activity、 Window、View的关系
1)动态加载Layout的代码是 getWindow().setContentView(LayoutInflater.from(this).inflate(R.layout.main, null)); ...
- Activity Window View WindowManager关系&Touch事件分发机制
http://www.cnblogs.com/linjzong/p/4191891.html https://www.cnblogs.com/kest/p/5141817.html https://b ...
- 动态载入Layout 与 论Activity、 Window、View的关系
1)动态载入Layout的代码是 getWindow().setContentView(LayoutInflater.from(this).inflate(R.layout.main, null)); ...
- ios中图层和view的关系
-(void)viewMethod{ //1: 要明白uiview内部是这样实现 CALayer *layer1= [CALayer layer]; layer.delegate=self; [lay ...
- ios开发中view.layer.shouldRasterize = YES 的使用说明
在做一个NavigationController push 子页面时,发现push和pop时很卡,研究了一大阵子后,发现在子页面里影响UI流畅的只有UIImageView的圆角设置:然后我就关闭了圆角 ...
- 底层剖析 Window 、Activity、 View 三者关系
不管工作几年的 Android 工程师,或多或少都听说过 Window 的概念,并且隐隐约约感觉它在 Activity 与 View 之间应该发挥着某种连接的作用.但是如果需要说出这 3 者之间的关系 ...
- activity 、window与view的关系(下)
在activity的attacth方法中,通过policymanager 的makenewwindow来创建window 而window的具体实现是phonewindow 接下来通过setconten ...
随机推荐
- Unity3D 自定义事件(事件侦听与事件触发)
先来看下效果图,图中点击 Cube(EventDispatcher),Sphere(EventListener)以及 Capsule(EventListener)会做出相应的变化,例子中的对象相互之间 ...
- TweenMax参数说明
TweenMax 建立在 TweenLite 和 TweenFilterLite 基础之上,因此,又揉合了这二者的功能,使得功能更加的齐备,但是如果说易用性,觉得还是 TweenLite 来得方便一些 ...
- MySQL性能分析及explain的使用
MySQL性能分析及explain用法的知识 1.使用explain语句去查看分析结果 如explain select * from test1 where id=1;会出现:id selectty ...
- mysql 定时任务
mysql 5.1以上支持定时任务. SHOW VARIABLES LIKE 'event_scheduler'; 检查是否已开启该功能 开启计划任务功能: SET GLOBAL event_sc ...
- Volley
Volley 是 Google 推出的轻量级 Android 异步网络请求框架和图片加载框架.在 Google I/O 2013 大会上发布.其适用场景是数据量小,通信频繁的网络操作. 主要特点: ( ...
- Java Service Wrapper简介与使用
在实际开发过程中很多模块需要独立运行,他们并不会以web形式发布,传统的做法是将其压缩为jar包独立运行,这种形式简单易行也比较利于维护,但是一旦服务器重启或出现异常时,程序往往无法自行修复或重启.解 ...
- redis 简单应用
Incr $views = Redis::incr('views'); $article_views = Redis::incr('article:' . $article_id . ':views' ...
- css基础知识
CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明.其中选择器通常是您需要改变样式的 HTML 元素(比如p标签),也可以是节点的属性的值(比如id,class):每条声明都是一条字典key ...
- 关于ios 3D变换 CGAffineTransformIdentity
每次做完3D变换以后,重新设置view的frame时,记得用CGAffineTransformIdentity 对3D变换进行还原,否则将会影响frame.当你对view进行3D变换后,重新设置vie ...
- Base64加密算法封装
/// <summary>/// 实现Base64加密解密/// </summary>public sealed class Base64{/// <summary> ...