この assets/Files/android.gif のようなアセット フォルダー内に .gif ファイルがあります。ファイルを開こうとすると、2 行目で例外がスローされます
AssetManager mngr=getAssets();
InputStream is2=mngr.open("Files/android.gif");
テキストファイルを開こうとすると同じコードが機能するにもかかわらず、画像ファイルを開こうとしているのですか?ここで何が問題になる可能性があります。
この assets/Files/android.gif のようなアセット フォルダー内に .gif ファイルがあります。ファイルを開こうとすると、2 行目で例外がスローされます
AssetManager mngr=getAssets();
InputStream is2=mngr.open("Files/android.gif");
テキストファイルを開こうとすると同じコードが機能するにもかかわらず、画像ファイルを開こうとしているのですか?ここで何が問題になる可能性があります。
これらのラインは完全に機能しています--
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();
}
画像が非常に大きい場合は、ビットマップにデコードする前に画像をスケーリングする必要があります。大きな画像を効率的に表示する方法を参照してください
未処理の例外タイプIOExceptionについて苦情が寄せられていると思われます。その場合は、mgr.openの呼び出しをtry-catchブロックに入れて、InputStreamオブジェクトの取得時に発生する可能性のある例外を処理する必要があります。
AssetManager mngr = getAssets();
try {
InputStream is2 = mngr.open("Files/android.gif");
} catch (final IOException e) {
e.printStackTrace();
}
変更されたかどうかはわかりませんが、Android 1.1 でアイコンを開いてビューに表示するアプリがあり、次のようにしました。
BufferedInputStream buf = new BufferedInputStream(mContext.openFileInput(value));
Bitmap bitmap = BitmapFactory.decodeStream(buf);
これを行うための推奨される方法は、画像を res/drawable ディレクトリに配置することだと思います。次に、次のような Drawable を取得できます。
Drawable d = Resources.getSystem().getDrawable(R.drawable.android);
ミナ、私も同じ問題を抱えていました... 「資産」内に画像と XML ファイルがあり、XML ファイルは読み取れましたが、画像は読み取れませんでした。数時間の欲求不満の後、私はついに解決策を見つけました!
私はここに解決策を投稿しました: Null-pointer issuedisplaying an image from assets folder Android 2.2 SDK