2010-08-30 21 views
6

मैं एक यूआरएल से एक छवि प्रदर्शित करने की कोशिश कर रहा हूं, जो स्क्रीन आयामों से बड़ा हो सकता है। मेरे पास यह काम कर रहा है, लेकिन मैं स्क्रीन को फिट करने के लिए स्केल करना चाहता हूं, और जब स्क्रीन अभिविन्यास बदलता है तो मुझे भी समस्याएं होती हैं। छवि छोटी है, और मैं इसे अपनी चौड़ाई को स्क्रीन पर भी स्केल करना चाहता हूं। (दोनों ही मामलों में, मैं छवि चाहते हैं (यदि ऊंचाई के लिए आवश्यक स्क्रॉलबार के साथ स्क्रीन चौड़ाई को भरने के लिए)यूआरएल से आकार छवि - आकार और स्क्रीन अभिविन्यास समस्याओं

यहाँ मेरी imageView है:।

<ImageView android:id="@+id/ImageView01" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:scaleType="fitCenter" 
    android:adjustViewBounds="true"> 
</ImageView> 

यहाँ जावा कोड जो छवि लोड है: (कुछ त्रुटि हैंडलिंग कोड सादगी के लिए हटाया)

Object content = null; 
    try{ 
     URL url = new URL("http://farm1.static.flickr.com/150/399390737_7a3d508730_b.jpg"); 
     content = url.getContent(); 
    } 
     catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
    InputStream is = (InputStream)content; 
    Drawable image = Drawable.createFromStream(is, "src"); 
    Image01.setImageDrawable(image); 

मैं एंड्रॉयड के लिए अलग-अलग सेटिंग की कोशिश की है:।। scaleType मैं माफी चाहता हूँ अगर इस सवाल से पहले कहा गया है मैं इस विषय पर ट्यूटोरियल की एक संख्या के माध्यम से चले गए हैं , लेकिन वे मेरे लिए काम नहीं कर रहे हैं। यकीन नहीं है कि यह कोई है छवि लोड होने के तरीके के साथ जी करने के लिए जी। (स्थानीय संसाधन के बजाय वेब से)

एक और मुद्दा यह है कि कभी-कभी छवि भी लोड नहीं होती है। कोई रनटाइम त्रुटियां नहीं हैं, मुझे ImageView में कुछ भी नहीं मिला है।

अगर आपको अधिक जानकारी या स्पष्टीकरण की आवश्यकता है तो कृपया मुझे बताएं।

उत्तर

9

के बारे में है कि "कभी कभी छवि भी लोड नहीं करता है" संदर्भ से संबंधित है मुद्दा तो मैं उस मुद्दे

public Object fetch(String address) throws MalformedURLException, 
    IOException { 
     URL url = new URL(address); 
     Object content = url.getContent(); 
     return content; 
    } 

    private Drawable ImageOperations(Context ctx, String url) { 
     try { 
      InputStream is = (InputStream) this.fetch(url); 
      Drawable d = Drawable.createFromStream(is, "src"); 
      return d; 
     } catch (MalformedURLException e) { 
      return null; 
     } catch (IOException e) { 
      return null; 
     } 
    } 

हल करने के लिए काम करता है के लिए इस्तेमाल किया तो अपनी छवि आप चाहिए के साथ स्क्रीन चौड़ाई को भरने के लिए यदि आप एक बड़े आकार की छवि स्पष्ट रूप से लोड आप अधिक समय तक इंतजार करना होगा, और समस्याओं UnknowHostException के लिए कारण हो सकता है डाउनलोड इस

try{ 
     String url = "http://farm1.static.flickr.com/150/399390737_7a3d508730_b.jpg";   
     Drawable image =ImageOperations(this,url); 
     Image01.setImageDrawable(image); 
    } 
    catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 


    Image01.setMinimumWidth(width); 
    Image01.setMinimumHeight(height); 

    Image01.setMaxWidth(width); 
    Image01.setMaxHeight(height); 

अद्यतन की तरह एक कोड है ::।

हाँ आप सही हैं कि आप स्थानीय रूप से अपनी छवि को सहेज लेंगे, स्थानीय पहुंच डाउनलोड से तेज़ है।

रोटेशन परिवर्तन पर समस्याओं से बचने के लिए अपने configChanges = "keyboardHidden | उन्मुखीकरण" सेट के अंदर अपने न्यूनतम और अधिकतम चौड़ाई के साथ मदद के लिए Manifest.xml

<activity android:name=".myActivity" 
... 
     android:configChanges="keyboardHidden|orientation" > 
... 
/> 
+0

धन्यवाद संपत्ति। यह चाल है, हालांकि मुझे छवि दृश्य को स्क्रॉलव्यू के अंदर रखना होगा यदि चौड़ाई को सेट करने से छवि उपलब्ध ऊंचाई से अधिक हो जाती है। – RMS2

+0

अब, जैसा कि छवि डाउनलोड नहीं हो रहा है, (मैंने जोरेगीस का कोड इस्तेमाल किया) मैं सभी तरह की परेशानी में भाग रहा हूं। ऐसा लगता है कि जब छवि प्रदर्शित नहीं होती है, तो क्या हो रहा है कि .createFromStream विधि करते समय मुझे "SkImageDecoder :: फैक्टरी वापस लौटा" त्रुटि मिल रही है। कभी-कभी यह काम करता है और कभी-कभी मुझे वह मिलता है। मैंने बफर को फ्लश करने के लिए इनपुटस्ट्रीम को बंद करने का प्रयास किया है, लेकिन नहीं जाना। मैंने थोड़ी देर में कोड की उन पंक्तियों को लपेटने की कोशिश की है (डी == नल) लूप, लेकिन फिर मुझे एक अंतहीन लूप मिलता है। – RMS2

+0

जब मैं स्क्रीन घुमाता हूं तो मुझे स्मृति समस्याएं भी मिल रही हैं। अगर छवि पहली बार लोड हो जाती है, तो अभिविन्यास में परिवर्तन होने पर मुझे आउटऑफमेमरी त्रुटि मिल जाएगी। डिजिटल फोटो के मामले में छवि 1 एमबी है - लेकिन शायद यह एंड्रॉइड के लिए बहुत बड़ी है? मुझे लगता है कि मुझे स्मृति रिसाव मिल रही है। मैंने Image01.getDrawable() सेट की कोशिश की। सेटबॉलबैक (शून्य); गतिविधि के ऑनस्ट्रोय() में, लेकिन इससे मदद नहीं मिलती है। – RMS2

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