161

我正在进行 Android 学习,我刚刚介绍了 Assets 和 Raw 资源。我试图了解使用原始资源与资产的原因。

  1. 它们都提供了未编译的资源输入流。

  2. 资产似乎比原始资源提供了更多的灵活性和功能。

    一种。assets您可以在下但不能在下创建文件夹结构raw

    湾。您可以在文件夹中动态列出所有资源,assets但不能在文件夹中列出raw

那么,我为什么要在 Android 中使用 Raw 资源呢?

4

3 回答 3

192
于 2012-03-05T08:13:07.487 回答
38

Android 文档中,该raw/目录用于:

以原始形式保存的任意文件。要使用原始InputStream打开这些资源,请使用资源 ID(即R.raw.filename )调用Resources.openRawResource()

但是,如果您需要访问原始文件名和文件层次结构,您可能会考虑在assets/目录中保存一些资源(而不是 res/raw/)assets/中的文件没有资源 ID,因此您只能使用AssetManager读取它们。


总而言之,raw/目录中的文件不是由平台编译的被分配了一个资源 ID,并且不能被分组到子文件夹中,而如果你想要其他方式,请使用该assets/目录。

于 2015-05-13T07:37:14.447 回答
1

添加到上面给出的答案...

/res/strings、/res/layout、/res/xml 文件等都被编译成二进制格式。但是,如果您将文件(包括 XML 文件)放在 /res/raw/ 目录中,它们不会被编译成二进制格式。

使用资产而不是原始资源的一大优势是 file:///android_asset/ Uri前缀。这对于将资产加载到 WebView 中很有用。例如,要访问项目中位于 assets/foo/index.html 中的资产,您可以调用 loadUrl("file:///android_asset/foo/index.html")将该 HTML 加载到 WebView 中。

于 2018-08-07T04:59:07.750 回答