據Android develop guide,顯示列表將與LAYER_TYPE_NONE硬件acceleartion視圖中創建的,而hardware layer將與LAYER_TYPE_HARDWARE硬件acceleartion視圖中創建。在兩種方法中應用旋轉動畫時都不需要重新繪製視圖。那麼,當啓用硬件加速動畫視圖時,LAYER_TYPE_NONE和LAYER_TYPE_HARDWARE之間的實際區別是什麼?動畫視圖與硬件加速時有什麼LAYER_TYPE_NONE和LAYER_TYPE_HARDWARE之間的區別啓用
-3
A
回答
1
如果您應用旋轉動畫,首先將重繪視圖。
硬件層(LAYER_TYPE_HARDWARE)被緩存在GPU上,這使得動畫期間的某些操作更快。簡單的轉換(翻譯,旋轉,縮放和alpha)可以用圖層快速渲染。
LAYER_TYPE_HARDWARE使用佔用GPU內存的圖層,顯然你不想要任何內存泄漏。因此,您應該只在必要時使用硬件層,如在動畫過程中。
With LAYER_TYPE_NONE,您明確要避免啓用硬件加速的硬件層呈現。
作爲參考,讀http://blog.danlew.net/2015/10/20/using-hardware-layers-to-improve-animation-performance/
相關問題
- 1. 硬浮點數和軟浮點數之間有什麼區別?
- 2. 視圖和流之間有什麼區別?
- 3. 方法迭代器和視圖之間有什麼區別?
- 4. 存儲過程和視圖之間有什麼區別?
- 5. 方法「插入子視圖」和「presentModalViewController」之間有什麼區別?
- 6. DesiredCapabilities與RequiredCapabilities之間有什麼區別?
- 7. Console.WriteLine()與Debug.WriteLine()之間有什麼區別?
- 8. gets.chomp()與STDIN.gets.chomp()之間有什麼區別?
- 9. 動畫視圖時使用硬件圖
- 10. 添加之間有什麼區別?
- 11. 使用Laravel的ORM - 速記與速記之間有什麼區別?
- 12. 服務mongodb啓動和mongod之間的區別是什麼
- 13. 「層」和「層」之間有什麼區別?
- 14. Tableau和QlikView之間有什麼區別
- 15. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之間有什麼區別?
- 16. @Entity和@embeddable之間有什麼區別
- 17. ContentObservable和DataSetObservable之間有什麼區別?
- 18. touchmove和gesturechange之間有什麼區別?
- 19. :notification.flags和notification.defaults之間有什麼區別?
- 20. proc和lambda之間有什麼區別?
- 21. :: after和after之間有什麼區別?
- 22. read()和io.read()之間有什麼區別?
- 23. Request()和Request.Form()之間有什麼區別?
- 24. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 25. getA()和this.getA()之間有什麼區別?
- 26. (int)和intval()之間有什麼區別?
- 27. set_value和= pandas之間有什麼區別
- 28. * zoom和zoom之間有什麼區別?
- 29. {0}和「」之間有什麼區別?
- 30. typedef和using之間有什麼區別?
根據[硬件加速(https://developer.android.com/guide/topics/graphics/hardware-accel.html),*使用顯示列表也有利於動畫性能因爲設置特定的屬性,如alpha或旋轉,並不需要使目標視圖無效(這是自動完成的)。* – York
我猜想旋轉,它會使自身失效,如何在不重繪視圖的情況下發生視圖更改? –
如果您只需要旋轉視圖,則很有可能。 CPU繪製displayList/layer,GPU將layer/displayList與指定的仿射矩陣進行合成,該矩陣包含平移,旋轉,縮放到其父項。 – York