Est-il possible de charger un fichier dessinable depuis le dossier assets?

Pouvez-vous charger un fichier à partir d’un sous-répertoire dans le dossier assets (pas le dossier pouvant être dessiné)?

J’espère que cette aide:

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

Je recommande d’utiliser ceci

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

qui retourne correctement mis à l’échelle grâce à des ressources …

Voici une classe avec une méthode statique pour obtenir le dessin à partir des actifs. Il ferme également le stream d’entrée.

 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, Ssortingng 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; } } 

Oui, vous pouvez créer un object Drawable partir d’un InputStream à l’aide de la méthode createFromStream () .

Voici la fonction qui fait cela pour vous.

Vérifiez que la variable Drawable renvoyée est null car null peut retourner si le chemin n’est pas valide ou s’il existe une exception IOException.

 public static Drawable getDrawableFromAssetFolder(Ssortingng 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; } 

Cela a aidé à obtenir la bonne densité

 private Drawable drawableFromAssetFilename(Ssortingng 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; } 

Dans cette version, vous ne pouvez pas, si vous créez un sous-dossier dans votre dossier, vous ne pouvez pas l’utiliser dans votre fichier XML, il ne sera pas reconnu lorsque vous utilisez Android: src.

Jetez un coup d’oeil à ce sujet: le répertoire pouvant être dessiné sur Android peut-il contenir des sous-répertoires?