如何在android中的资产文件夹中设置背景图像?

时间:2011-02-02 20:18:40

标签: android

从资产文件夹设置LinearLayout的backGround图像时遇到问题。

String filePath="file:///android_asset/images/test.png";
    Drawable d = Drawable.createFromPath(filePath);
    frontTextView.setBackgroundDrawable(d);

有人可以帮助我。

3 个答案:

答案 0 :(得分:18)

好的,如果其他人偶然发现这个问题,你想要从资产中的图像设置视图的背景:

Drawable d = Drawable.createFromStream(getAssets().open(path_in_assets), null);

然后将其设置为某些仅支持Drawables作为背景的视图。

答案 1 :(得分:8)

据我所知,you cannot access assets directly就像你想要的那样。如果要将其存储为资产,则需要使用AssetManager类来获取数据。 Here's a pretty decent blog post解释了一些资源和资产,当然官方文档也是一个很好的资源。

我还要补充一点,背景图片等内容通常最好存储在res/drawable中,并使用R.drawable.*样式进行访问(上面链接的博客文章也会讨论此内容)。现在还不清楚为什么你需要从提供的代码示例中这样做,所以我想这最终是你的呼唤。

答案 2 :(得分:2)

编辑:从InputStream添加了创建图片...

我使用ImageButton遇到了类似的问题。我通过从资源加载位图并将其用作ImageButton的图像来计算出来。可能不是一个好的方法,但正在工作并解决了我的问题 - 无法在drawable dir中使用子文件夹而且文件名中不允许使用字符。

(是的,我可以使用前缀而不是subdir,并重命名文件以匹配模式(仅限小写和数字),我可能稍后会这样做。)

InputStream is = null;
try {
  is = this.getResources().getAssets().open("Images/Fruits/Apple.png");
} catch (IOException e) {
  Log.w("EL", e);
}

Bitmap image = BitmapFactory.decodeStream(is);

ImageButton ib2 = (ImageButton) findViewById( R.id.imageButton2);
ib2.setImageBitmap( image);