2012-09-29 19 views
6

से खींचने योग्य लोड हो रहा है मैं अपने डिवाइस एसडी कार्ड से एक खींचने योग्य के रूप में एक पीएनजी छवि लोड करने की कोशिश कर रहा हूं। मैं निम्नलिखित फ़ंक्शन का उपयोग करें, लेकिन यह काम नहीं करता है:एसडी कार्ड

public Drawable getDrawable() 
{ 
return new BitmapDrawable(imagePath); 
} 

छवि पथ है: mnt/sdcard/MyFolder/image.png

ऐप्लिकेशन क्रैश जब मैं उस विधि से कॉल करके, कैसे करना चाहिए मैं अपने एसडीकार्ड में स्थित मेरी पीएनजी छवि लोड करता हूं और इसे एक ड्रायबल ऑब्जेक्ट में डाल देता हूं?

+1

देखो कैसा लगा रहा हूँ सरल) – Doomsknight

+0

@Doomsknight क्या आप कृपया एक उदाहरण प्रदान कर सकते हैं? मैं अब बिटमैपफ्रोफाइल के लिए देख रहा था लेकिन इसके बारे में कोई जानकारी नहीं मिली। – idish

+0

@ डूमस्कनाइट मैं देखता हूं, इसलिए मुझे बाद में बिटमेप को एक ड्रॉइंग ऑब्जेक्ट में डालना होगा? – idish

उत्तर

13

वास्तव में फ़ाइल पथ से सीधे एक बिटमैप ड्रावेबल कन्स्ट्रक्टर है। जिस विधि का आप उपयोग कर रहे हैं वह वंचित है। प्रयास करें:

Drawable myDrawable = new BitmapDrawable(getResources(), pathName); 

यदि यह काम नहीं करता है, एक बिटमैप हो रही है और इसमें से एक drawable बनाने का प्रयास करें:

बिटमैप decodeFile

साथ बनाया जा सकता है आप इसे इस तरह का उपयोग कर सकते हैं:

Bitmap myBitmap = BitmapFactory.decodeFile(pathName); 

फिर आप ड्राइंग आदि के लिए बिटमैप का उपयोग कर सकते हैं

drawable उपयोग

Drawable myDrawable = new BitmapDrawable(getResources(), myBitmap); 

को बिटमैप कन्वर्ट करने के लिए एक नज़र Here (Bitmaps) और Here (Bitmap Drawables) अधिक जानकारी के लिए ले लो।

+0

कोड का पहला भाग = नया बिटमैप ड्रायबल() होना चाहिए क्योंकि यह एक कन्स्ट्रक्टर है। –

+0

@ जॉन जेस्मिथ बदल गया। :) – Doomsknight

0

मैं `decodeFile` http://developer.android.com/reference/android/graphics/BitmapFactory.html#decodeFile(java.lang.String पर कि

public Drawable getDrawableFromPath(String filePath) { 
    Bitmap bitmap = BitmapFactory.decodeFile(filePath); 
    //Here you can make logic for decode bitmap for ignore oom error. 
    return new BitmapDrawable(bitmap); 
}