Je ne crois pas que ce soit une question limitée aux fonds d'écran animés, mais c'est le cas d'utilisation avec lequel je suis en train de travailler.Le moyen le plus efficace en mémoire pour mettre à l'échelle bitmap pour le fond d'écran en direct?
J'ai un 256 bitmap 256 x créé comme "tuile" pour mon fond d'écran en direct. Je suis à la recherche d'un moyen efficace de mettre à l'échelle la mémoire pour l'adapter à un écran complet de l'appareil. Je continue de rencontrer des problèmes de "dépassement de la mémoire VM" chaque fois que l'appareil tourne d'avant en arrière, ce qui suggère que je ne gère pas le problème correctement.
L'image est dessinée à l'aide de la méthode drawBitmap()
de Canvas. J'ai essayé les options suivantes:
- Créer le bitmap, puis appelez
createScaledBitmap()
- Créer le bitmap, puis appelez
scale()
sur ma toile - Créer le bitmap, puis créer une matrice à « étirer » la largeur et la hauteur, et l'appliquer avec un
preScale()
Si j'appelle recycle()
les pistes de papier peint en direct pour une trame, puis se bloque. Si je ne fais pas pivoter l'appareil du tout, je ne reçois pas de pannes de mémoire.
Merci pour vos suggestions!
J'ai eu un problème similaire. Découvrez http://stackoverflow.com/questions/7051025/how-do-i-scale-a-streaming-bitmap-in-place-without-reading-the-whole-image-first – emmby