Android:如何绕过无效图层的失效/重绘?

时间:2012-01-01 21:53:40

标签: android

我有一个相对布局,其中有几个ImageViews(透明区域)彼此相对。问题是:如果我使其中一个无效,那么所有其他的onDraw()方法也会被调用。这是正常的吗? 我不希望重绘所有的图层(视图),因为这是一个很大的性能问题 - 我只希望无效的视图重绘...

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

假设您在invalidate()上使用了View,也许您可​​以尝试使用其中一个other?理论上,这只会重绘受影响的(脏)区域。

void invalidate(Rect dirty)
void invalidate(int l, int t, int r, int b)
void invalidateDrawable(Drawable drawable)

另见this视频(34:07左右)。他们有一个很好的小演示,详细描述了这一点。

答案 1 :(得分:1)

  

这是正常的吗?

  

因为这是一个很大的性能问题

使用Traceview来确定性能瓶颈所在。

或者,可能确实使用layers

或者,如果您正在创建游戏或其他内容,请不要使用窗口小部件框架,而是直接绘制到Canvas(或使用OpenGL)。