Android raw 目录 和 assets 目录

2019-06-23  本文已影响0人  leilifengxingmw

raw

raw 目录是res目录的子目录,所有的文件都必须直接放在raw目录下,raw目录不允许建子目录。

raw.png

Android会自动的为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

  1. 列出assets目录下的文件
AssetManager assetManager = getAssets();
//列出所有文件
String[] files = assetManager.list("");
//列出assets目录下指定目录下的文件
//String[] files = assetManager.list("skin");

  1. 加载assets目录下的html文件
/**
 * 加载assets目录下的网页
 */
public void loadUrl() {
    webView.loadUrl("file:///android_asset/html/TextFormat.html");
}

说明:这种方式可以加载assets目录下的网页,并且与网页有关的css,js,图片等文件也会自动加载。

  1. 加载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目录下的文件详细介绍

参考链接

  1. AssetManager
  2. Android中读取assets目录下的文件详细介绍
  3. Android 之 assets目录和raw目录
上一篇下一篇

猜你喜欢

热点阅读