我正在进行 Android 学习,我刚刚介绍了 Assets 和 Raw 资源。我试图了解使用原始资源与资产的原因。
它们都提供了未编译的资源输入流。
资产似乎比原始资源提供了更多的灵活性和功能。
一种。
assets
您可以在下但不能在下创建文件夹结构raw
湾。您可以在文件夹中动态列出所有资源,
assets
但不能在文件夹中列出raw
。
那么,我为什么要在 Android 中使用 Raw 资源呢?
我正在进行 Android 学习,我刚刚介绍了 Assets 和 Raw 资源。我试图了解使用原始资源与资产的原因。
它们都提供了未编译的资源输入流。
资产似乎比原始资源提供了更多的灵活性和功能。
一种。assets
您可以在下但不能在下创建文件夹结构raw
湾。您可以在文件夹中动态列出所有资源,assets
但不能在文件夹中列出raw
。
那么,我为什么要在 Android 中使用 Raw 资源呢?
在Android 文档中,该raw/
目录用于:
以原始形式保存的任意文件。要使用原始InputStream打开这些资源,请使用资源 ID(即R.raw.filename )调用Resources.openRawResource()。
但是,如果您需要访问原始文件名和文件层次结构,您可能会考虑在
assets/
目录中保存一些资源(而不是 res/raw/)。assets/中的文件没有资源 ID,因此您只能使用AssetManager读取它们。
总而言之,raw/
目录中的文件不是由平台编译的,被分配了一个资源 ID,并且不能被分组到子文件夹中,而如果你想要其他方式,请使用该assets/
目录。
添加到上面给出的答案...
/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 中。