invalidate()不考虑滚动位置?

时间:2014-08-29 05:03:35

标签: android invalidation

source code of 2.3中,您可以在invalidate()中看到以下代码段:

    final Rect r = ai.mTmpInvalRect;
    r.set(0, 0, mRight - mLeft, mBottom - mTop);
    // Don't call invalidate -- we don't want to internally scroll
    // our own bounds
    p.invalidateChild(this, r);

这意味着此功能不考虑mScrollX / mScrollY。

invalidate(int, int, int, int)中:

    final int scrollX = mScrollX;
    final int scrollY = mScrollY;
    final Rect tmpr = ai.mTmpInvalRect;
    tmpr.set(l - scrollX, t - scrollY, r - scrollX, b - scrollY);
    p.invalidateChild(this, tmpr);

使用当前滚动位置偏移脏区。

我编写了一个简单的测试应用程序并使用这两种方法(invalidate()invalidate(0,0,getWidth(),getHeight()))在android 2.3上运行它,结果是一样的。那么管道如何使它们具有相同的效果呢?

0 个答案:

没有答案