Android raw 目录 和 assets 目录
2019-06-23 本文已影响0人
leilifengxingmw
raw
raw 目录是res目录的子目录,所有的文件都必须直接放在raw目录下,raw目录不允许建子目录。
raw.pngAndroid会自动的为raw目录下的所有资源文件生成一个ID,这个ID会被存储在R类当中,我们可以直接使用ID访问资源文件。
例如我们在raw目录下有一张portrait.png
在布局文件使用
<ImageView
android:id="@+id/ivRaw"
android:src="@raw/portrait"
android:layout_width="match_parent"
android:layout_height="200dp" />
在代码中使用
ivRaw.setImageResource(R.raw.portrait)
如果要使用原始 InputStream打开这些资源,可以用 Resources.openRawResource()方法。该方法可以用来打开图像,声音和原始资源。
val inputStream = resources.openRawResource(R.raw.portrait)
ivRaw.setImageBitmap(BitmapFactory.decodeStream(inputStream))
assets
assets目录和res目录是同一级目录。assets目录下允许建立子文件夹。assets 中的文件没有资源 ID,因此您只能使用 AssetManager 读取这些文件。
新建assets目录
create_asset_directory.png
assets所在的文件目录
asset_hierarchy.png
使用AssetManager
关于AssetManager的完整方法列表请参考AssetManager
- 列出assets目录下的文件
AssetManager assetManager = getAssets();
//列出所有文件
String[] files = assetManager.list("");
//列出assets目录下指定目录下的文件
//String[] files = assetManager.list("skin");
- 加载assets目录下的html文件
/**
* 加载assets目录下的网页
*/
public void loadUrl() {
webView.loadUrl("file:///android_asset/html/TextFormat.html");
}
说明:这种方式可以加载assets目录下的网页,并且与网页有关的css,js,图片等文件也会自动加载。
- 加载assets目录下的图片
public void loadBitmap() {
InputStream is = null;
try {
is = getAssets().open("img_demo.png");
} catch (IOException e) {
e.printStackTrace();
}
Bitmap bitmap = BitmapFactory.decodeStream(is);
iv.setImageBitmap(bitmap);
}
其他加载文本,加载音乐等请参考 Android中读取assets目录下的文件详细介绍。
参考链接