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,动画的时候速度嗖嗖的。

时间: 2024-10-05 15:24:36

setAlpha与View Layer关系的相关文章

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

一. self.view.layer.contents 和 self.view.backgroundColor 今天测了一下 :    self.view.layer.contents 和 self.view.backgroundColor 例子: self.view.layer.contents = (id)[UIImage imageNamed:@"musicBackground.jpg"].CGImage; self.view.backgroundColor = [UIColor

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

1)动态载入Layout的代码是 getWindow().setContentView(LayoutInflater.from(this).inflate(R.layout.main, null)); 它等同于 setContentView(R.layout.main); 事实上 getWindow().setContentView(LayoutInflater.from(this).inflate(R.layout.main, null))  是 setContentView(R.layout

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

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

Activity、Window、View的关系

1.先看一个现象 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); //getWindow().setContentView(R.layout.activity_main);//

Android杂谈--Activity、Window、View的关系

转自 http://www.cnblogs.com/loulijun/archive/2012/02/09/2344681.html Activity其实更像一个控制单元,控制window上显示的View内容,比如在Activity里有一个addContentView()方法,实际上调用了window的addContentView()方法 /** * Add an additional content view to the activity. Added after any existing

android 创建view间关系

在此过程中 1.viewgroup知道自己有几个子view. 2.每个view的一些基本属性都已经知道 id backgroud width height ... 通过view的构造函数style传递进来. findViewById() view.findViewById() 原文地址:https://www.cnblogs.com/l-h-h/p/10321839.html

django 进阶之view layer

一 基本环境 1 环境处理 mkdir djanad cd djanad/ pyenv virtualenv 3.6.5 djanad pyenv local djanad 结果如下 2 创建django和基本配置 pip install django==2.1 django-admin startproject demo . django-admin startapp app 结果如下 数据库配置如下 基本时区和mysql配置及相关时区配置请看django基础 https://blog.51c

设置view的layer属性方法

1.需要导入QuartzCore.framewoork框架到工程2.在文件中导入#import 3.设置 必须导入的空间 #import<QuartzCore/QuartzCore.h> 就拿view来举例 view.laye.cornerRadius=8.0;//倒角 view.layer.shadowColor=[UIColor blackColor]CGColor];//阴影颜色 view.layer.shadowOffset=CGSizeMake(10, 10);//阴影距离 view

activity window view 关系

1.Activity , Window和View的关系是什么? 跟踪Activity的源码就会发现:Activity.attch() -> PolicyManager -> Policy -> PhoneWindow -> mLayoutInflater.inflate()&mContentParent.addView()这只是一个简单的跟踪过程描述.通过跟踪源代码,就可以很清晰的看出他们三者的关系. Activity像一个工匠(控制单元),Window像窗户(承载模型),