1

我在从资产文件夹中检索图像路径时遇到问题。

我在资产文件夹中有一个图像文件夹。在文件夹中,我有三个不同的文件夹。

这是我使用的代码:

String IntroImage1= "" + languageSelected + "/" + Intro1ImagePath + ".png" ;


try{
    AssetManager mngr =getAssets();
    InputStream BulletImgInput = mngr.open(IntroImage1);
    //InputStream BulletImgInput = mngr.open("image/Malay/bullet.png");

    Bitmap bitmapBullet = BitmapFactory.decodeStream(BulletImgInput);
    BulletImage.setImageBitmap(bitmapBullet);
    }catch(final IOException e){
    e.printStackTrace();
    }

我想知道为什么我不能显示图像?因为我试图通过这段代码来检索它:

InputStream BulletImgInput = mngr.open("image/Malay/bullet.png");

它确实检索了文件,但是我在mngr.open中替换的字符串没有显示出来。

真的需要你们帮忙。谢谢。

4

5 回答 5

7

您不需要 AssetManager。你可以做

BitmapFactory.decodeFile("file:///android_asset/image/Malay/bullet.jpg")

尽管将图像存储在资产中并不是最好的方法。您将无法利用 Android 资源管理系统。因此,除非您有令人信服的理由这样做,否则我建议您看看使用res文件夹和资源系统。

更新:说明BitmapFactory有一个方法来通过该方法解码文件decodeFile。这是第一点。Android 允许您assets通过file:///android_asset/{path}路径访问文件夹中的文件。在您的情况下,/image/Malay/bullet.jpg 中的图像是assets可以通过file:///android_asset/image/Malay/bullet.jpg.

于 2012-05-15T09:14:30.937 回答
4

尝试这个:

try {

    // get input stream
    InputStream ims = getAssets().open("avatar.jpg");

    // load image as Drawable
    Drawable d = Drawable.createFromStream(ims, null);

    // set image to ImageView
    mImage.setImageDrawable(d);
}
catch(IOException ex) {

      Log.e("I/O ERROR","Failed when ..."
}

你的子弹图像

于 2012-05-15T09:26:44.503 回答
3
String url = "file:///android_asset/NewFile.txt";

String url = "file:///android_asset/logo.png";

您可以访问任何文件....

于 2012-05-15T09:04:09.317 回答
1
InputStream BulletImgInput = mngr.open("file:///android_asset/image/Malay/bullet.png");

也许这对你有用。

于 2012-05-15T09:08:07.050 回答
0

可能问题出在image路径的丢失部分?

String IntroImage1= "image/" + languageSelected + "/" + Intro1ImagePath + ".png" ;

代替

String IntroImage1= "" + languageSelected + "/" + Intro1ImagePath + ".png" ;

Upd:检查languageSelectedand的值Intro1ImagePath

于 2012-05-15T09:09:23.960 回答