Opening a File from assets folder in android

前端 未结 6 962
面向向阳花
面向向阳花 2020-12-01 14:37

I have a .gif file inside the assets folder like this assets/Files/android.gif. when I try to open the file it throws an exception at the second line

AssetM         


        
相关标签:
6条回答
  • 2020-12-01 14:57

    These Lines are working perfectly--

    InputStream assetInStream=null;
    
    try {
        assetInStream=getAssets().open("icon.png");
        Bitmap bit=BitmapFactory.decodeStream(assetInStream);
        img.setImageBitmap(bit);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if(assetInStream!=null)
        assetInStream.close();
    }
    

    If your image is very big then you should scale your image before decoding it into Bitmap. See How to display large image efficiently

    0 讨论(0)
  • 2020-12-01 14:57

    I do not believe gif is supported automatically on Android. Try a png or jpg with the same code.

    0 讨论(0)
  • 2020-12-01 15:02

    I believe the preferred way to do this is to put your image in the res/drawable directory. Then you can get a Drawable like this:

    Drawable d = Resources.getSystem().getDrawable(R.drawable.android);
    
    0 讨论(0)
  • 2020-12-01 15:10

    Mina, I had the same problem... I had images and an XML file within "assets" and I could read the XML file but not the images. After a couple of hours of frustration I finally found the solution !

    I have posted the solution here: Null-pointer issue displaying an image from assets folder Android 2.2 SDK

    0 讨论(0)
  • 2020-12-01 15:14

    Don't know if things have changed or not but I had an app in Android 1.1 that opened icons to then display them in a view and I did it like so:

    BufferedInputStream buf = new BufferedInputStream(mContext.openFileInput(value));
    Bitmap bitmap = BitmapFactory.decodeStream(buf);
    
    0 讨论(0)
  • 2020-12-01 15:22

    I suspect you are getting complaints about unhandled exception type IOException. If that's the case, you need to put the call to mgr.open in a try-catch block to handle the exception that may occur when retrieving the InputStream object.

    AssetManager mngr = getAssets();
    try {
        InputStream is2 = mngr.open("Files/android.gif");
    } catch (final IOException e) {
        e.printStackTrace();
    }
    
    0 讨论(0)
提交回复
热议问题