@代表引用资源.
1、引用自定义资源:比如说定义text 格式为
“@string/name”
2、引用系统资源:比如说设置文本颜色,就是
"@android:color/darker_gray"
其实也就是引用系统资源是引用自定义资源的一个子类.
@*代表引用系统的非public资源.
系统资源定义分为public和非public
public 的声明在SDK的文件夹里面,路径是platfroms/android/data/res/values/public.xml
@*android:type/name
:可以调用系统定义的所有资源
@android:type/name
:只能够调用public属性的资源
需要注意的是:没在public.xml中声明的资源是google不推荐使用的
?代表引用主题属性.
另外一种资源值允许你引用当前主题中的属性的值。这个属性值只能在style资源和XML属性中使用;它允许你通过将它们改变为当前主题提供的标准变化来改变UI元素的外观,而不是提供具体的值。
当你使用这个标记,你所提供的资源名必须能够在主属性中找到,因为资源工具认为这个资源属性是被期望得到的,不需要明确的指出它的类型(也就是不需要写全在哪个文件中).
例如:
android:textColor="?android:textDisabledColor"
主题属性可以在SDK的 values 找到attrs.xml文件
Android系统也为Theme 定义了很多属性
每个主题属性名称 都对应SDK/values目录下的themes.xml文件中,当用到主题属性的时候,可以直接在?后面加上属性名。
@+代表在创建资源
+表示在R.java中名type的内部类中加一条记录.
如@+id/button—就是在R.java文件中的id这个静态内部类添加一条常量button,该常量就是该资源的标识符.
@+id/资源ID名
—新建一个资源ID
@id/资源ID名
—应用现有已定的资源的ID,包括系统ID
@android:id/资源ID名
—引用系统ID,同@id/资源ID名