6
votes

getdrawingcache () retournez toujours null

Je veux capturer le contenu de l'image d'image à l'aide de DrawingCache. J'ai écrit le code ci-dessous. XXX

Mais je n'obtiens qu'une seule image à l'écran. Plus tard, je suis venu connaître myscreenshot est null

J'ai vu de nombreux postes concernant le même problème, mais pas de solution appropriée.

Je pensais que toutes les autorisations que nous devons ajouter Dans Manifeste? ou autorisation racine requise pour y parvenir? S'il vous plaît aidez-moi à ce sujet concernant ce problème.


0 commentaires

4 Réponses :


0
votes
 <RelativeLayout
    android:id="@+id/item"               
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="320dp"
        android:layout_height="486dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:background="@drawable/iv1" />

    <ImageView
        android:id="@+id/ic_launcer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="@drawable/iv2" />

</RelativeLayout>

0 commentaires

10
votes

Essayez appeler BuildDrawingCache () avant getdrawingcache ()

EDIT: Call getdrawingcache () , une fois que la page a été chargée, au lieu de Oncreate


5 commentaires

J'ai ajouté IV1.BuildDrawingCache (); avant GetDrawingCache (). pas d'Utilisation


Avez-vous vérifié que IV1 a une image lorsque la demande est exécutée? Spécifiez également où vous appelez exactement votre code. Vous l'appelez peut-être avant que les vues soient initialisées


Dans le fichier XML seulement, je donne Android: SRC pour IV1. Le code que j'ai posté ici est après SetContentView (r.layout.main); dans Oncreate () Est-ce correct?


Par souci de débogage, ajoutez un bouton temporaire et essayez d'exécuter le code sur le bouton Cliquez pour que nous puissions nous assurer que tout est chargé correctement. Une autre question qui me vient à l'esprit est si IV1 est définie dans le XML, puis dans la méthode Oncreate, il n'aurait probablement rien d'autre que ce que vous avez spécifié dans le XML. Donc, le réglage IV2 de IV1, dans l'Oncreate n'a pas beaucoup de sens. Ai-je raison?


Merci de me suggérer. Mon code fonctionne, seul problème consiste à mettre mon code dans méthode Oncreate (). Je l'ai testé avec un bouton. Pas besoin de méthode BuildDrawingCache ().



1
votes

vous ne faites pas iv1.buililddrawingcache (true) ; Ajouter une ligne avant
bitmap myscreenshot = iv1.gedDrawingCache ();


1 commentaires

Votre réponse est la même réponse que l'acceptée écrite par @aqs



2
votes

Call GetDrawingCache () dans Onwindowfocuschanged () et pas dans Oncreate (), vous n'obtiendrez pas NULL.


0 commentaires