Pouvez-vous charger un dessin dans un sous-répertoire du 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 cette
Drawable.createFromResourceStream(resources,new TypedValue(), resources.getAssets().open(filename), null)
qui retourne correctement dimensionnable grâce aux ressources ...
Voici une classe avec une méthode statique pour obtenir le dessin des actifs. Il ferme également le flux 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, 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;
}
}
Oui, vous pouvez créer un objet Drawable
à partir d'une InputStream
en utilisant la méthode createFromStream () .
Voici la fonction qui fait cela pour vous.
Vérifiez que la variable Drawable renvoyée a la valeur null, car la valeur null peut être renvoyée si le chemin n'est pas valide ou s'il existe une exception 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;
}
Cela a aidé à obtenir la bonne densité
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;
}