2010-11-15 18 views
1

Dans mon activité sur les applications Android, j'ai un RelativeLayout avec un ImageView et deux TextViews en cours d'exécution. J'ai également un bouton Enregistrer dans l'activité que j'utilise pour enregistrer l'image dans l'ImageView sur la carte SD de l'appareil. Maintenant, ce que je veux vraiment faire est de convertir les éléments (image et le texte dans le RelativeLayout) ensemble à une image PNG lorsque le bouton Enregistrer est cliqué et l'enregistrer sur la carte SD.Comment convertir un RelativeLayout avec une ImageView et une TextView en une image PNG?

Avez-vous essayé une conversion comme celle-ci avant? Il serait très utile si quelqu'un peut me donner des conseils ou des extraits de code sur la façon de s'y prendre?

La fonctionnalité Enregistrer fonctionne correctement, mais enregistre actuellement uniquement l'image dans la vue d'image.

Merci d'avance.

Répondre

7

RelativeLayout est une sous-classe de View, et ce qui suit devrait travailler pour une vue:

final View v; // The view that you want to save as an image 
Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888); 
Canvas c = new Canvas(bitmap); 
v.draw(c); 
File outputFile; // Where to save it 
FileOutputStream out = new FileOutputStream(imageFile); 
boolean success = bitmap.compress(CompressFormat.PNG, 100, out); 
out.close(); 

Ajouter la gestion des exceptions à votre guise. ;)

+0

ok je vais essayer cela et poster comment cela fonctionne ... merci une tonne !! – Aakash

+0

merci beaucoup fonctionne très bien! Je voulais mentionner que FileOutputStream a un bug signalé avec Sun qui se produit si le nom de fichier et/ou le chemin a plus de 200 caractères. – Aakash