tags:

views:

101

answers:

1

Please explain how does the drawing cache work in Android. I'm implementing a custom View subclass. I want my drawing to be cached by the system. In the View constructor, I call

setDrawingCacheEnabled(true);

Then in the draw(Canvas c), I do:

    Bitmap cac = getDrawingCache();
    if(cac != null)
    {
        c.drawBitmap(cac, 0, 0, new Paint());
        return;
    }

Yet the getDrawingCache() returns null to me. My draw() is not called neither from setDrawingCacheEnabled(), nor from getDrawingCache(). Please, what am I doing wrong?

A: 

There's a hard limit on drawing cache size, available via the ViewConfiguration class.. My view is larger than allowed for caching. FYI, the source for the framework View class is at http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/java/android/view/View.java;h=da48f403656bc37983f17ddc4af15ba0458b4c12;hb=6b9a1a5124321253a75a17027292080bf6a946e8

Seva Alekseyev