use*_*321 2 android hardware-acceleration
视图可以具有LAYER_TYPE_HARDWARE(view.setLayerType(LAYER_TYPE_HARDWARE,null))的layerType,它告诉它将缓存绘制到GPU中.如何判断缓存的绘制频率?有什么规则吗?我假设每次视图调用invalidate或onDraw时,LAYER_TYPE_HARDWARE都必须创建一个新的缓存.如果这是真的,对于一个调用onDraw的视图来说,没有LAYER_TYPE_HARDWARE似乎更好,因为有两倍的工作(因为绘制到未使用的缓存将是开销).
无论如何,我看到没有挂钩,我可以记录和设置开发选项闪存GPU上的屏幕也看不到做任何事情.
TL:DR,我怎么知道创建新的图层缓存的时间?
我如何知道何时创建新的图层缓存?
它在您第一次调用view.setLayerType(LAYER_TYPE_HARDWARE,null)时创建
在幕后,您的视图快照被拍摄并作为纹理上传到GPU.
如何判断缓存的绘制频率?有什么规则吗?
如果要更改某些属性(如alpha,视图坐标,缩放或旋转视图),则不会将新纹理上载到GPU.这就是为什么硬件层对于某些类型的动画是好的,因为不是重绘(因此在层的情况下重新上载纹理),你基本上只需要将转换矩阵发送到GPU.
如果更改视图的任何其他属性,则会将新纹理上载到GPU,如果您在动画中执行此操作,则可能会非常昂贵.
我假设每次视图调用invalidate或onDraw时,LAYER_TYPE_HARDWARE都必须创建一个新的缓存.
要看.如前一段所述,如果使用alpha,x,y,scale和rotate等图层友好属性,则无效将不会导致重绘.在这种情况下,不会上传新纹理.
但是,由于对其他属性的更改而导致无效将导致纹理上传,并且比仅绘制没有图层的速度慢.
归档时间: |
|
查看次数: |
1848 次 |
最近记录: |