2012-01-20 14 views
6

लौट रहा है मैं DrawingCache का उपयोग करके ImageView की सामग्री को कैप्चर करना चाहता हूं। मैंने नीचे कोड लिखा है।getDrawingCache() हमेशा शून्य

iv1 = (ImageView)findViewById(R.id.iv1); 
iv2 = (ImageView)findViewById(R.id.iv2);    
iv1.setDrawingCacheEnabled(true); 
Bitmap myScreenshot = iv1.getDrawingCache(); 
iv2.setImageBitmap(myScreenshot); 

लेकिन मुझे स्क्रीन पर केवल एक छवि मिल रही है। बाद में मुझे पता चला कि myScreenshot शून्य

मैंने एक ही समस्या के बारे में कई पोस्ट देखी हैं, लेकिन कोई उचित समाधान नहीं है।

मैंने सोचा कि हमें किसी भी अनुमति को प्रकट में जोड़ना है? या इसे प्राप्त करने के लिए आवश्यक रूट अनुमति? कृपया इस समस्या के बारे में मेरी मदद करें।

उत्तर

10

कॉल करके देखें buildDrawingCache()getDrawingCache() से पहले

संपादित करें: कॉल getDrawingCache(), पृष्ठ के बाद लोड किया है, बजाय onCreate

+0

मैंने iv1.buildDrawingCache() जोड़ा; getDrawingCache() से पहले। कोई उपयोग नहीं –

+0

क्या आपने जांच की है कि एप्लिकेशन चलाने पर iv1 की एक छवि है। यह भी निर्दिष्ट करें कि आप वास्तव में कहां अपना कोड कह रहे हैं। Xml फ़ाइल में विचारों को – aqs

+0

आरंभ करने से पहले आप इसे कॉल कर सकते हैं केवल मैं एंड्रॉइड दे रहा हूं: iv1 के लिए src। कोड जो मैंने यहां पोस्ट किया है सेटकंटेंट व्यू (आर। प्लेआउट.मेन) के बाद है; ऑनक्रेट() में यह सही है? डिबगिंग के लिए –

0
imageview.setBackgroundResource(R.drawable.imageview);     

imageview1.setBackgroundResource(R.drawable.imageview1); 

उपयोग इस दो छवियों Screan है

<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> 
1

आपनहीं करते हैंiv1.buildDrawingCache(true); पहले
Bitmap myScreenshot = iv1.getDrawingCache();

+0

आपका उत्तर सटीक वही उत्तर है जैसा कि @aqs – gecco

2

कॉल getDrawingCache() onWindowFocusChanged() और नहीं में OnCreate() में पंक्ति जोड़ें, तो आप अशक्त नहीं मिलेगा।

+0

द्वारा लिखित स्वीकृत एक के रूप में धन्यवाद, यह मेरे लिए काम करता है! –

संबंधित मुद्दे