可以注意到,与Eclipse ADT(应用程序开发工具)不同, Android Studio不包含Assets文件夹,我们通常在其中保存HTML之类的Web文件。资产提供了一种在应用程序中添加文本,XML,HTML,字体,音乐和视频等任意文件的方法。如果有人尝试将这些文件添加为“ resources ”,则Android会将它们视为其资源系统,您将无法获取原始数据。如果要访问未更改的数据,则资产是一种处理数据的方法。但是出现的问题是为什么在资产文件夹中?我们可以通过创建Resource Raw Folder来做同样的事情。那么,让我们讨论一下Assets文件夹与Resource Raw文件夹有何不同?
资产文件夹与Resource Raw文件夹有何不同?
在Android中,可以将原始资产文件(如JSON,文本,mp3,HTML,pdf等)存储在两个可能的位置:
- 资产
- res /原始文件夹
两者看起来是相同的,因为它们可以读取文件并生成InputStream,如下所示
// From assets
assets.open(assetPathFilename)
// From res/raw
resources.openRawResource(resourceRawFilename)
但是什么时候使用哪个文件夹?
以下是一些可能有助于选择的指导
1.灵活的文件名:(资产更好)
- 资产:开发人员可以以任何方式命名文件名,例如使用大写字母(fileName)或使用空格(文件名)。
- res / raw:在这种情况下,文件名受到限制。基于文件的资源名称只能包含小写的az,0-9或下划线。
2.存储在子目录中:(可能在资产中)
- 资产:如果开发人员想要将文件分类到子文件夹中,则他/她可以在如下所示的资产中进行操作。
- res / raw:在这种情况下,文件只能位于根文件夹中。
3.编译时检查:(可能在res / raw中)
- 资产:这里,将其读入InputStream的方法如下。如果文件名不存在,那么我们需要捕获它。
assets.open(“filename”)
- res / raw文件夹:在这里,将其读入InputStream的方式是:
resources.openRawResource(R.raw.filename)
因此,将文件放在res / raw文件夹中将在编译时检查期间确保提供正确的文件名。
4.在运行时列出文件名:(可能在资产中)
- 资产:如果开发人员想要列出资产文件夹中的所有文件,则他/她已使用list()函数并在根文件夹上提供了文件夹名称或“” ,如下所示。
assets.list(FOLDER_NAME)?.forEach {
println(it)
}
- res / raw:在此文件夹中无法执行此操作。开发人员必须在开发过程中而不是运行时知道文件名。
因此,在资产中,人们可以在运行时读取文件名,列出它们并动态使用它们。在res / raw中,可能需要在字符串资源文件中编写好代码。
5.可从XML访问的文件名:(可能在res / raw中)
- 资产:开发人员可以简单地安排XML文件(例如AndroidManifest.xml)以指向资产文件夹中的文件的简单方法。
- res / raw:在Java等任何XML文件中,开发人员都可以使用@ raw / filename轻松访问res / raw中的文件。
因此,如果您需要以任何XML访问文件,请将其放在res / raw文件夹中。让我们做一个表格来轻松记住整个场景。
Scenario |
Assets Folder |
Res/Raw Folder |
---|---|---|
Flexible File Name |
YES |
NO |
Store in subdirectory |
YES |
NO |
Compile-time checking |
NO |
YES |
List filenames at runtime |
YES |
NO |
Filename accessible from XML |
NO |
YES |
如何在Android Studio中创建资产文件夹?
现在让我们讨论如何在android studio中创建资产文件夹。以下是在Android Studio中创建资产文件夹的分步过程。
步骤1:建立 Android Studio中的资产文件夹首先以Android模式打开您的项目,如下图所示。
步骤2:转到应用>右键单击>新建>文件夹>资产文件夹,然后创建资产文件夹。
步骤3: Android Studio将打开一个对话框。将所有设置保留为默认值。在目标源集下,应选择选项main 。然后单击完成按钮。
步骤4:现在打开app文件夹,您将在资产文件夹中找到名为“ assets ”的名称,如下图所示。