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?