Cri*_*ris 262 android android-assets
我知道res目录中的文件可以从R.class资产的行为类似文件系统访问,但我想知道,一般来说,最好使用其中一个.
任何人都可以帮助我了解资产和资产之间的真正差异吗?
Ted*_*opp 280
随着资源,有内置的支持,提供不同的语言,操作系统版本,屏幕方向等的替代品,如所描述这里.这些都不适用于资产.此外,API的许多部分都支持使用资源标识符.最后,资源的名称将转换为在编译时检查的常量字段名称,因此代码和资源本身之间的不匹配机会就会减少.这些都不适用于资产.
那么为什么要有资产文件夹呢?如果要计算要在运行时使用的资产,则非常简单.使用资源,您必须声明可能使用的所有资源ID的列表,并在列表中计算索引.(如果资源集在开发周期中发生变化,这有点尴尬并引入错误机会.)(编辑:您可以使用名称检索资源ID getIdentifier,但这会失去编译时检查的好处.)资产可以也可以组织成文件夹层次结构,资源不支持.这是一种管理数据的不同方式.虽然资源涵盖了大多数情况,但资产偶尔会被使用.
另一个区别是:库项目中定义的资源会自动导入依赖于库的应用程序项目.对于资产,这不会发生; 资产文件必须存在于应用程序项目的assets目录中.[编辑:使用Android新的基于Gradle的构建系统(与Android Studio一起使用),这已不再适用.库项目的资产目录打包到.aar文件中,因此库项目中定义的资产将合并到应用程序项目中(因此,/assets如果它们位于引用的库中,则它们不必存在于应用程序的目录中).
编辑:如果您想要在您的应用程序中打包自定义字体,则会出现另一个差异.有一些API调用可以Typeface从存储在文件系统或应用程序assets/目录中的字体文件创建.但是没有API来创建一个Typeface存储在res/目录中的字体文件(或者来自一个InputStream允许使用该res/目录的字体文件).[ 注意:使用Android O(现在可在alpha预览中使用),您将能够将自定义字体包含为资源.请参阅此处针对这个早该进行的功能的说明.但是,只要您的最低API级别为25或更低,您就必须坚持将自定义字体打包为资产而不是资源.
DRi*_*FTy 60
两者非常相似.两者之间真正的主要区别在于,在res目录中每个文件都有一个预编译的ID ,可以通过它轻松访问R.id.[res id].这对于快速轻松地访问图像,声音,图标非常有用......
该assets目录更像是一个文件系统,可以更自由地放置您想要的任何文件.然后,您可以像访问任何文件系统中的任何文件一样访问该系统中的每个文件.这个目录适用于游戏细节,词典等等.希望有所帮助.
小智 36
我知道这是旧的,但为了说清楚,官方的android文档中有每个解释:
来自http://developer.android.com/tools/projects/index.html
assets/这是空的.您可以使用它来存储原始资产文件.您在此处保存的文件将按原样编译为.apk文件,并保留原始文件名.您可以使用URI以与典型文件系统相同的方式导航此目录,并使用AssetManager将文件作为字节流读取.例如,这是纹理和游戏数据的良好位置.
res/raw/对于任意原始资产文件.在此处而不是在assets /目录中保存资产文件的方式与访问它们的方式不同.这些文件由aapt处理,必须使用R类中的资源标识符从应用程序引用.例如,这是媒体的好地方,例如MP3或Ogg文件.
小智 9
以下是一些要点:
结论
| 归档时间: |
|
| 查看次数: |
126057 次 |
| 最近记录: |