最近项目中有个队友抱怨运行总是莫名的报错,崩溃,说是半路出家也好,说是懒于学习也好,反正就那回事,都懂得,应该好多人都遇见过类似的队友,不管怎样,一个团队,木桶效应还是得注意的,这里简单说下Android中资源的引用的集中方式和常见问题
- @常规资源引用
@[namespace:]type/name
项目资源命名空间可以省略不写
android:src="@drawable/img_sample_preview"
android:textColor="@android:color/black"
- @+ 创建资源
@+type/name,常见于id
android:id="@+id/btn_start"
@+id和@id的区别是一个是创建资源,一个是使用资源,在老的编译器中,同一个页面不同的view可以多次使用@+id,编译器会检测id是否存在,类似html中的id,但是在新的编译器中已经拒绝了这种做法,毕竟同一个id本身就是用来标识一个view,多个也就没有意义了,但是@id是可以重复使用的,只要id存在,不管是项目定义的还是系统的都能拿来用,但是要合理使用,避免出现多个view引用同一个id。(队友问题就是习惯性拷贝代码,只看效果,不做检查的,除非编译器直接报错的那种才会手动修改....)
- @*特殊资源引用
- 系统公开的资源 @android:type/name
- 系统非公开的资源 @*android:type/name
[注]系统非公开资源使用编译器会报红,但运行不会报错,这是google不推荐的引用方式,但是特殊情况下还是可以使用的,毕竟一个东西的好坏,也要看存在的场景。
- ?主题资源引用
?[namespace:]type/name,项目中的定义的主题namespace可以不写,有段时间自定义主题比较火,好多人就是利用了这个来实现的。
android:textColor="?attr/contentTextColor"
网友评论