为什么在安卓命名资源时不能使用大写字母?

4

我最近开始在Android上开发应用程序,很多教程都说我们不应该在资源命名中使用大写字母。为什么?另外,不能使用扩展名如.png和.xml。如果我有两个文件button.png和button.xml,应用程序如何区分这两个文件?


我猜只是遵循命名规范。 - Raghunandan
应用程序无法区分它们,您必须将它们放置在正确的位置以供应用程序使用,它们都是资源。 - DjHacktorReborn
但在其中一个教程中,他们将一个XML文件和一个PNG文件与相同的文件名放置在@drawable/文件夹中。 - Akas Antony
将它们命名为button_image.png和button_layout.xml。 - IAmGroot
2个回答

4
  1. 不允许在资源文件中使用大写字母只是为了严格遵循某些规定。

  2. 在同一资源文件夹中,不能同时使用相同名称的两种不同类型的资源。例如,假设您在drawable-hpdi中有两个资源文件。它们是a.png和a.xml。在编译时,编译器会显示错误。 但如果将a.png放置在drawable-hdpi中,a.xml放置在drawable-mdpi中,则不会显示任何错误,因为这两个资源将在完全不同的设备类型中使用。

我发现另一个有趣的事情是,如果在同一文件夹中使用a.png和a.xml,则错误将显示a.xml是重复的。但是,如果在同一文件夹中使用a.jpg和a.png,则会显示a.png是重复的。我们可以猜测没有文件类型优先级。编译器按自上而下的顺序搜索。由于a.png放置在a.xml之上,所以编译器会首先找到a.png,然后当他们找到同名的xml文件时会显示错误。出现a.jpg和a.png的情况也是同样的原因,a.png会显示错误。

注:此答案完全基于我的观察。我没有找到任何书面文档。因此,如果有人能提供证据证明我错了,那将不胜感激。


1
作为资源文件的文件名部分将用于在生成的Java文件中创建资源ID,因此您不能在同一目录中使用具有不同扩展名的相同资源文件名。
请参见资源引用中资源文件名的用法,有关位图文件
由于资源ID是Java变量,因此按照Java建议的变量约定(请参见Java的维基百科命名约定)以小写字母开头命名它们是一个好习惯。

它应该只通过禁止在同一目录中具有相同主名称但不同类型的两个资源文件来强制执行此操作,例如myFile.png与myFile.xml冲突?Java创建区分大小写的存根,因此即使我们不需要担心大小写不敏感的文件系统,也不会出现问题。使用不同的命名约定来命名文件名而不是传统的Java驼峰式样式略微令人沮丧。 - RichieHH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接