2012-02-01 7 views
0

J'ai récemment suivi les conseils de Google sur la mise en cache bitmap dans Android et ajouté mes propres LruCache à partir de la bibliothèque de support. Le LruCache fonctionne mieux si la taille des images en octets est connue du cache.Comment mesurer ou estimer la taille de bitmap dans Android Versions qui ne supportent pas bitmap.getByteCount()

Le problème ist le GetByteCount pour bitmaps est uniquement disponible depuis API Android Niveau 11.

Comment décririez-vous deviner la taille d'un bitmap en mémoire?

Répondre

5

À partir du code source android.graphics.Bitmap:

public final int getByteCount() { 
     // int result permits bitmaps up to 46,340 x 46,340 
     return getRowBytes() * getHeight(); 
    } 

Les deux getRowBytes() et getHeight() sont depuis l'API de niveau 1, de sorte que vous pouvez mettre en œuvre votre propre propre getByteCount() pour toutes les versions d'Android. En un coup d'oeil, il semble que getByteCount() a seulement été ajouté pour plus de commodité.

+0

Nice one. Aurait pu chercher la source moi-même ... – Janusz

2

Dépend de la Bitmap.Config que vous utilisez, n'est-ce pas? ARGB_8888 - qui devrait se retrouver quelque part autour de la largeur * hauteur * 4 octets déballés.

Questions connexes