关于理解Android资源文件夹

时间:2017-07-07 09:12:34

标签: android android-resources

我进行了一项研究,并深入研究了Android资源文件。根据{{​​3}},它表示Android外部化和分离用户'来自代码的资源允许使用 这些资源是由将在R.class中生成的ID,这里是文本:

Once you externalize your application resources, you can access them using resource IDs that are generated in your project's R class.

(1):成为' res'文件夹存在意味着生成R.java类?换句话说,R.java是" ids"分配给' res'内的任何值。夹?

(2):是否可以放置我的布局'或者'字符串'除了' res之外的任何其他文件夹中的文件?

2 个答案:

答案 0 :(得分:1)

  

R.java文件是aapt(Android Asset Packaging)自动生成的文件   工具)包含res /的所有资源的资源ID   目录。当你在xml文件中创建任何组件时,id为   相应的组件会自动在此文件中创建。

使用android studio创建布局文件时,它会自动将其放在layout文件夹下,但是当你手动创建它时,它将被归类为父文件夹,例如:drawable下的create layout文件将被调用为R.drawable.mLayout,android studio会将其显示为警告,但它会正常工作,所以是的,你可以在任何文件夹下放置任何类型的xml,它会正常工作,把它分类为默认更多可读性和更清晰的架构

答案 1 :(得分:1)

  

R.java是" ids"分配给内部的任何值   ' RES'文件夹?

很可能是 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0': Invocation of init method failed; nested exception is java.lang.AbstractMethodError: org.hibernate.validator.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider; at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) Truncated. see log file for complete stacktrace Caused By: java.lang.AbstractMethodError: org.hibernate.validator.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider; at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

的想法
  

是否可以放置我的布局'或者'字符串'任何其他文件   文件夹除了' res'?

是的,你可以这样做但在开始之前确保你检查了项目结构视图而不是其他选项,例如 android 结构视图。

R.java

build.gradle

然后创建所需的目录,类似于您声明的目录。 这是一个示例图像,显示它可以工作。

enter image description here

有什么好处是你可以创建更多的android { .... sourceSets { main { res.srcDirs = [ "src/main/module-res/compose" ]; } } } 文件夹(只需将它添加到数组中并用逗号分隔)。请注意,每个res文件夹必须有自己的 drawable,layout etc. 文件夹。

示例:

res