从资源加载图像 - 空指针和路径错误

时间:2015-01-29 18:04:24

标签: android imageview android-file

我想根据https://xjaphx.wordpress.com/2011/10/02/store-and-use-files-in-assets/

加载图片

文件夹结构如下所示(所有这些文件夹都是由Android Studio自动生成的,我只添加了资源文件夹):

enter image description here

这看起来与教程中的图片完全不同(例如res位于src/main此处以及教程ressrc处于同一级别)。

我还有一个加载图片的代码:

ImageView imageView = (ImageView) findViewById(R.id.imageView);
try {
        // get input stream
        InputStream ims = getAssets().open("dd.jpg");
        // load image as Drawable
        Drawable d = Drawable.createFromStream(ims, null);
        // set image to ImageView
        imageView.setImageDrawable(d);
} catch(IOException ex){
        return;
}

但是当我运行应用程序时,获取空指针异常。如果我将assets移到其他地方(app/assets以及Niechzeplynanaszepiesni/assets),我不会收到任何错误,但屏幕仍为空。

活动的.xml包含:

<ImageView  xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imageView"
android:layout_width="fill_parent" 
android:layout_height="fill_parent" />

1 个答案:

答案 0 :(得分:0)

您可以使用AssetManager使用其open()方法获取InputStream,然后使用BitmapFactory的decodeStream()方法获取位图。

private Bitmap getBitmapFromAsset(String strName)
{
    AssetManager assetManager = getAssets();
    InputStream istr = null;
    try {
        istr = assetManager.open(strName);
    } catch (IOException e) {
        e.printStackTrace();
    }
    Bitmap bitmap = BitmapFactory.decodeStream(istr);
    return bitmap;
}