如果开启了硬件加速,它们两者是没有关系的。一个先执行,一个后执行。

如果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关系的更多相关文章

  1. self.view.layer.contents 和 self.view.backgroundColor

    一. self.view.layer.contents 和 self.view.backgroundColor 今天测了一下 :    self.view.layer.contents 和 self. ...

  2. Activity Window View的关系

    http://blog.csdn.net/chiuan/article/details/7062215 http://blog.163.com/fenglang_2006/blog/static/13 ...

  3. 动态加载Layout 与 论Activity、 Window、View的关系

    1)动态加载Layout的代码是 getWindow().setContentView(LayoutInflater.from(this).inflate(R.layout.main, null)); ...

  4. Activity Window View WindowManager关系&Touch事件分发机制

    http://www.cnblogs.com/linjzong/p/4191891.html https://www.cnblogs.com/kest/p/5141817.html https://b ...

  5. 动态载入Layout 与 论Activity、 Window、View的关系

    1)动态载入Layout的代码是 getWindow().setContentView(LayoutInflater.from(this).inflate(R.layout.main, null)); ...

  6. ios中图层和view的关系

    -(void)viewMethod{ //1: 要明白uiview内部是这样实现 CALayer *layer1= [CALayer layer]; layer.delegate=self; [lay ...

  7. ios开发中view.layer.shouldRasterize = YES 的使用说明

    在做一个NavigationController push 子页面时,发现push和pop时很卡,研究了一大阵子后,发现在子页面里影响UI流畅的只有UIImageView的圆角设置:然后我就关闭了圆角 ...

  8. 底层剖析 Window 、Activity、 View 三者关系

    不管工作几年的 Android 工程师,或多或少都听说过 Window 的概念,并且隐隐约约感觉它在 Activity 与 View 之间应该发挥着某种连接的作用.但是如果需要说出这 3 者之间的关系 ...

  9. activity 、window与view的关系(下)

    在activity的attacth方法中,通过policymanager 的makenewwindow来创建window 而window的具体实现是phonewindow 接下来通过setconten ...

随机推荐

  1. Unity3D 自定义事件(事件侦听与事件触发)

    先来看下效果图,图中点击 Cube(EventDispatcher),Sphere(EventListener)以及 Capsule(EventListener)会做出相应的变化,例子中的对象相互之间 ...

  2. TweenMax参数说明

    TweenMax 建立在 TweenLite 和 TweenFilterLite 基础之上,因此,又揉合了这二者的功能,使得功能更加的齐备,但是如果说易用性,觉得还是 TweenLite 来得方便一些 ...

  3. MySQL性能分析及explain的使用

    MySQL性能分析及explain用法的知识 1.使用explain语句去查看分析结果 如explain select * from test1 where id=1;会出现:id  selectty ...

  4. mysql 定时任务

    mysql 5.1以上支持定时任务. SHOW VARIABLES LIKE 'event_scheduler';   检查是否已开启该功能 开启计划任务功能: SET GLOBAL event_sc ...

  5. Volley

    Volley 是 Google 推出的轻量级 Android 异步网络请求框架和图片加载框架.在 Google I/O 2013 大会上发布.其适用场景是数据量小,通信频繁的网络操作. 主要特点: ( ...

  6. Java Service Wrapper简介与使用

    在实际开发过程中很多模块需要独立运行,他们并不会以web形式发布,传统的做法是将其压缩为jar包独立运行,这种形式简单易行也比较利于维护,但是一旦服务器重启或出现异常时,程序往往无法自行修复或重启.解 ...

  7. redis 简单应用

    Incr $views = Redis::incr('views'); $article_views = Redis::incr('article:' . $article_id . ':views' ...

  8. css基础知识

    CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明.其中选择器通常是您需要改变样式的 HTML 元素(比如p标签),也可以是节点的属性的值(比如id,class):每条声明都是一条字典key ...

  9. 关于ios 3D变换 CGAffineTransformIdentity

    每次做完3D变换以后,重新设置view的frame时,记得用CGAffineTransformIdentity 对3D变换进行还原,否则将会影响frame.当你对view进行3D变换后,重新设置vie ...

  10. Base64加密算法封装

    /// <summary>/// 实现Base64加密解密/// </summary>public sealed class Base64{/// <summary> ...