ファイル名を使用したい場合は、それらをドローアブル フォルダー内に配置することはできません。これを行う唯一の方法は、アセット フォルダー内に画像を配置することです。フォルダーがない場合はassets/
、メイン プロジェクト内にフォルダーを作成する必要があります。gen/
、、res/
およびsrc/
フォルダーと同じブランチにある必要があります。
アセットフォルダーには、必要なファイル構造を含めることができます。たとえば、画像をassets/images/
フォルダーに入れることができます。サウンド ファイルはassets/sounds/
フォルダに入れることができます。次のように画像にアクセスします。
public Bitmap getBitmap(Context ctx, String pathNameRelativeToAssetsFolder) {
InputStream bitmapIs = null;
Bitmap bmp = null;
try {
bitmapIs = ctx.getAssets().open(pathNameRelativeToAssetsFolder);
bmp = BitmapFactory.decodeStream(bitmapIs);
} catch (IOException e) {
// Error reading the file
e.printStackTrace();
if(bmp != null) {
bmp.recycle();
bmp = null
}
} finally {
if(bitmapIs != null) {
bitmapIs.close();
}
}
return bmp;
}
パス名は、変数名が示すように、assets/
フォルダーに対して相対的である必要があります。したがって、フォルダーに画像がそのままある場合、それは単純imageName.png
です。サブフォルダーにある場合は、subfolder/imageName.png
.
注: Android は、assets フォルダー内の密度フォルダーから選択しません。画像をそのままデコードします。画面密度と解像度のさらなる調整は、ユーザーが行う必要があります。
Androidのアセットフォルダーからファイルを開く