2011-02-03 15 views

उत्तर

97

आशा इस मदद:

Drawable d = Drawable.createFromStream(getAssets().open("Cloths/btn_no.png"), null); 
+0

बस आश्चर्य, फ़ाइल automically आप के लिए बंद कर दिया है देखते हैं? सुरक्षा के लिए, मैं वर्तमान में एक चर को खुले() की वापसी देता हूं, फिर इसे मैन्युअल रूप से बंद कर देता हूं। –

+0

@DATVM नहीं, यह स्वचालित रूप से इनपुटस्ट्रीम को बंद नहीं करता है। मैंने परिसंपत्तियों से आकर्षित करने के लिए स्थैतिक विधि के साथ एक कक्षा बनाई है और इसे नीचे अलग जवाब के रूप में जोड़ा है। –

-1

इस संस्करण आप नहीं, अगर आप अपने drawable फ़ोल्डर के भीतर एक उप फ़ोल्डर बनाने आप इसे अपने xml फ़ाइल में उपयोग नहीं कर सकते कर सकते हैं, यह मान्यता प्राप्त नहीं किया जाएगा जब आप एंड्रॉयड का उपयोग करें: src।

इस सूत्र पर एक नज़र डालें: Can the Android drawable directory contain subdirectories?

+0

यह मामला है, स्क्रीन पर प्रदर्शित करने के लिए कुछ सौ कस्टम मैप टाइल्स लोड करने का सबसे आसान तरीका क्या है? – Jamie

+0

आह मेरा प्रश्न संपत्ति फ़ोल्डर के बारे में है, ड्रॉइंग नहीं। प्रश्न संपादित किया गया। – Jamie

+0

यह उत्तर अब पुराना है कि प्रश्न अद्यतन किया गया है। – styler1972

2

हाँ आप createFromStream() विधि का उपयोग कर एक InputStream से एक Drawable वस्तु बना सकते हैं।

+0

क्या ड्रॉबल करने योग्य फ़ोल्डर में ड्रॉबल्स के लिए भी संभव है? अगर हाँ से कैसे? –

+0

@ चिरागशाह मुझे समझ में नहीं आता है। खींचने योग्य निर्देशिका में छवियां आपके लिए सिस्टम द्वारा परिवर्तित की जाती हैं। –

+0

मैं संपत्ति फ़ोल्डर से छवियों को लोड करने के लिए के रूप में मैं मानचित्र टाइल वही नाम हैं लेकिन अलग निर्देशिका के साथ की एक बहुत कुछ है एक त्वरित तरीका की जरूरत है। – Jamie

5

मैं इस

Drawable.createFromResourceStream(resources,new TypedValue(), resources.getAssets().open(filename), null) 

जो ठीक से संसाधनों के लिए drawable धन्यवाद बढ़ाया रिटर्न का उपयोग करने की सलाह देते हैं ...

+0

warrning: एचटीसी डिजायर एचडी पर इस विधि का अपवाद है, मुझसे पूछो क्यों नहीं ... – David

0

यह सही घनत्व

हो रही मदद की
private Drawable drawableFromAssetFilename(String filename) { 
    AssetManager assetManager = mApplicationContext.getAssets(); 
    InputStream inputStream = null; 
    try { 
     inputStream = assetManager.open(filename); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    Bitmap bitmap = BitmapFactory.decodeStream(inputStream); 

    BitmapDrawable drawable = new BitmapDrawable(mApplicationContext.getResources(), bitmap); 
    return drawable; 
} 
1

यहां एक ऐसा कार्य है जो आपके लिए यह करता है।

चेक अशक्त के रूप में अशक्त के लिए लौट आए Drawable चर यदि पथ अमान्य है या एक IOException है वापस आ सकते हैं।

public static Drawable getDrawableFromAssetFolder(String fullPath, Activity ctx) { 
    Drawable d =null; 
    try { 
     d = Drawable.createFromStream(ctx.getAssets().open(fullPath), null); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return d; 
} 
2

यहां संपत्तियों से आकर्षित करने के लिए स्थिर विधि वाला एक वर्ग है। यह इनपुटस्ट्रीम को भी बंद कर देता है।

import android.content.Context; 
import android.graphics.drawable.Drawable; 

import java.io.IOException; 
import java.io.InputStream; 

/** 
* Created by bartburg on 4-11-2015. 
*/ 
public class AssetsReader { 

    public static Drawable getDrawableFromAssets(Context context, String url){ 
     Drawable drawable = null; 
     InputStream inputStream = null; 
     try { 
      inputStream = context.getAssets().open(url); 
      drawable = Drawable.createFromStream(inputStream, null); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if(inputStream != null) { 
       try { 
        inputStream.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
     return drawable; 
    } 
} 
संबंधित मुद्दे