可以从资产文件夹中加载可绘制的可绘制吗?

问题描述 投票:0回答:7
您可以从

assets

(不是可绘制文件夹)文件夹中的子目录加载可绘制的绘制吗?
    

android drawable assets
7个回答
107
投票

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



8
投票

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

由于资源,它可以正确缩放可绘制的缩放...


7
投票

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


是的,您可以使用

2
投票
方法来创建一个

Drawable

对象。
    
为您做到这一点的函数。

检查null返回的可绘制变量,因为如果路径无效或有ioexception,则null可能会返回。

InputStream


2
投票

i我正在一个回收库适配器中工作,发现

david's s的答案对我不起作用(由于某种原因,无论我进口什么而尚未解决)

我发现这对我有用(Kotlin Code)
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;
}

1
投票
link

这有助于达到正确的密度

asset.open

在此版本中,如果您在可绘制的文件夹中制作一个子文件夹,则无法在XML文件中使用它,当您使用Android:src.时,它将无法识别。 enter image description here查看此线程:可绘制的可绘制目录包含子目录?


0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.