La méthode getDrawingCache () d'Android 2.1 View renvoie toujours la valeur null
Je travaille avec Android 2.1, et le problème suivant:
À l'aide de la méthode de Vue.getDrawingCache() renvoie toujours null. getDrawingCache() doit renvoyer une image Bitmap, qui est la présentation de Vue du contenu.
Exemple de code:
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final View view = findViewById(R.id.ImageView01);
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
final Bitmap bmp = view.getDrawingCache();
System.out.println(bmp);
}
J'ai déjà essayé différentes façons de configurer l'Affichage de l'objet pour générer le dessin de cache (par exemple, View.setWillNotDraw(boolean)
et View.setWillNotCacheDrawing(boolean)
), mais rien ne fonctionne.
Quel est le droit chemin, ou ce que je fais mal?
PS: Dans le code réel, je veux appliquer getDrawingCache() sur un ViewGroup comme RelativeLayout. Le comportement est-il le même lorsque vous utilisez un ViewGroup?
source d'informationauteur Impression | 2010-05-12
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin
Bitmap.createBitmap(view.getDrawingCache());
que l'image à partir de laquelle la référence est reçu pargetDrawingCache()
sont recyclés.utilisation
ex:
avant d'appeler getDrawingCache
Jamais faire ces choses dans onCreate!
Vous pouvez le faire dans une Vue.onClickListener ou à un autre endroit.
Je sais que ce n'est pas la réponse à votre question, mais....
Tout comme un de côté pour d'autres développeurs de cette lecture, si ce que vous êtes vraiment essayer de faire est de les avoir accès à une vue personnalisée du contenu, et d'en tirer votre vue personnalisée à partir d'une ImageView. Et puis créer une toile et de la bitmap que vous allez contrôler/dessiner/lire et utiliser setImageBitmap() pour mettre votre image bitmap dans la vue de l'objet. A partir de là, vous pouvez ignorer la toile transmis dans le onDraw(canvas) la méthode et l'attirer dans votre local toile/image au lieu.
Pourquoi auriez-vous besoin? Il y a un oubli dans la classe de Toile, à mon avis. La classe Canvas vous donne aucun moyen de lire le canevas contenu, ni d'aller à la bitmap derrière elle. Donc, si jamais vous avez besoin de lire à partir d'une image, par exemple pour acquérir une image de vidage de l'affichage du contenu, il n'ya aucun moyen que je connaisse pour le faire, d'autres que la méthode décrite ci-dessus.
Cela ne fonctionne pas pour le RelativeView problème initialement décrite ici, dans ce fil, mais cela pourrait être d'intérêt pour les nouveaux développeurs Android.
Autant que j'ai lu les derniers jours dans la documentation, vous devriez onlycall setDrawingCacheEnabled ou buildDrawingChache (), mais pas les deux.
eu le même problème et finalement c'est en partie ce qui fonctionne pour moi:
le seul problème est que je n'arrive pas à la dimension de mon point de vue.
vue.getwidth retourne null ...
Découvrez si votre point de vue n'est pas plus grand que la taille de l'écran. J'ai trouvé ce et sous tension, les dimensions de mon point de vue donc, maintenant, ça marche =)
Android obtenir une Vue complète en tant que Bitmap