【发布时间】:2014-08-13 06:28:04
【问题描述】:
如this answer 中所述,ScrollViews 中的淡入淡出可能很慢。我想知道,为什么?
“使用衰落边缘可能会导致明显的性能下降 并且只应在应用程序的视觉要求时使用 设计。要请求 API 级别 14 及更高级别的衰落边缘,请使用
android:requiresFadingEdge属性改为"http://developer.android.com/reference/android/R.attr.html#fadingEdge
我的兴趣源于两件事:
- 希望使用渐变边缘为用户提供视觉提示
- 在 PowerVR SGX 544 Galaxy S4 上使用渐变边缘时注意到 /extreme/ 性能损失。 (从 20-30 fps 下降到 0.2 fps),而在其他 GPU(例如 Adreno 320 HTC One)上没有看到性能损失
我认为可能褪色边缘在 SurfaceFlinger 中被实现为单独的层,并且它们通过硬件合成触发了 GLES 合成,但事实并非如此,根据this comment
【问题讨论】:
-
我无法回答为什么,但你能看到设置
android:hardwareAccelerated="true"时它是否表现更好? -
Romain Guy 简要解释了here。这意味着更多的读取、写入和绘制。
-
是的,请参阅 romainguy 的文章。由于性能问题,不鼓励使用边缘衰减。
-
Romain 的帖子是很有帮助的背景,但它不能解释 KitKat 设备上的差异。 (一方面是从 2008 年开始)。视图层次现在是用 GLES 绘制的(对吗?),少数启用混合的绘制应该 / 不 / 减慢 100 倍~。我想知道是否出于某种原因,S4 的 TouchWiz 4.4 构建会强制图层进入 CPU 绘图模式(通过调用 lockCanvas 或其他方式)。 FWIW,我的问题是关于 ScrollView,而不是 ListView,这是 Romain 帖子的主题。 @josephus 硬件加速已启用(目标 SDK = 19)。
标签: android scrollview