2011-01-31 14 views
6

मेरे पास एक एंड्रॉइड ऐप है जिसमें बाहरी निर्भर जार लाइब्रेरी है। इस बाहरी पुस्तकालय में कुछ पीएनजी-बिटमैप्स शामिल हैं जिन्हें मैं अपने एप्लिकेशन में कुछ छवि दृश्यों पर दिखाना चाहता हूं।क्लासपाथ से Android ImageView के लिए छवि कैसे लोड करें?

मेरे आवेदन की एपीके फ़ाइल के अंदर देखकर मैं एक उप निर्देशिका ("aq \ img") में छवियों को अपेक्षित रूप से ढूंढ सकता हूं।

छवि दृश्य पर एक छवि (कक्षापथ को अंतर्दृष्टि) दिखाने का सबसे अच्छा तरीका क्या है।

मैं इस

ImageView imgView01 = (ImageView) findViewById(R.id.imageView1); 
    Drawable d = Drawable.createFromPath("aq/img/sample.png"); 
    imgView01.setImageDrawable(d); 

और इस

InputStream is = ClassLoader 
      .getSystemResourceAsStream("sample.png"); 
    Bitmap bm = BitmapFactory.decodeStream(is); 
    imgView01.setImageBitmap(bm); 

की कोशिश की, लेकिन यह काम नहीं किया (मैं वास्तव में यह इतना आसान होने की उम्मीद नहीं की थी)। छवि खाली बनी हुई है।

मदद के लिए धन्यवाद!

सादर क्लाउस

उत्तर

4

PNG छवि एक "सिस्टम संसाधन" क्योंकि Android पर एक सिस्टम संसाधन नियमित फाइल सिस्टम में एक फाइल है नहीं है। जो छवि आप चाहते हैं वह एपीके संग्रह में है। आप एपीके संग्रह के बाइट पढ़ने के लिए InputStream खोलने के लिए getSystemResourceAsStream का उपयोग करने में सक्षम होंगे, लेकिन संग्रह के भीतर फ़ाइल नहीं जब तक कि आप फ़ाइल को निकालने के लिए तर्क लागू नहीं करते।

बस इस का उपयोग करें:

InputStream is = getClass().getClassLoader().getResourceAsStream("aq/img/sample.png"); 

संपादित करें: ध्यान दें कि Android पर, ऐसा नाम है जो getSystemResourceAsStream में भेजा जाता है रूट (/) करने के लिए फ़ाइल रिश्तेदार के लिए एक मार्ग के रूप में व्यवहार किया जाता है। चूंकि एपीके /data/app में संग्रहीत हैं, फिर एपीके पढ़ने के लिए InputStream खोलने के लिए, आप ClassLoader.getSystemResourceAsStream("data/app/PACKAGE-1.apk") का उपयोग कर सकते हैं, जहां "पैकेज" आपके ऐप का पैकेज है।

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