Support Annotation Library是从Android Support Library 19.1 开始引入的一个全新的函数包,它包含一系列有用的元注解,用来帮助开发者在编译期间发现可能存在的Bug。Support Library本身也使用Annotation Library 提供的注解来完善自身的代码质量,Android Studio 提供可视化的交互以便开发者发现问题。
Android Support Library 发展到现在已经不止是一个jar包了,而是拆分成多个独立的Jar包,例如support-v4、support-v7、gridlayout-v7、design、cardview-v7等等。而Annotation Libary 也是其中之一,默认情况下是不会包含在工程中的,如果我们的SDK已经安装了android Support Repository,那么我们打开Project Structure 对话框,并选中一个Module,选中Dependencies选项,点击“+”按钮,在弹出的Choose Library Dependency 对话框中轻松找到Annotation Library。
点击添加后,在Module的build.gradle文件中会新增加Annotation函数库的依赖如下:
compile 'com.android.support:support-annotations:26.0.0-alpha1'
下面我们按照类型进行一一介绍。
1. Nullness 注解
此类型包含如下内容:
- @Nullable作用于函数参数或返回值,标记参数或返回值可以为空。
- @NonNull作用于函数参数或返回值,标记参数或返回值不能为为空。
如果在函数参数或返回值使用了上述注解,而又出现违反该注解的代码时,Android Studio 会给出提示,同时使用Android Lint进行静态代码扫描,也会显示出错提示。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
test(null);
}
private void test(@NonNull String str) {
Log.e(TAG,str);
}
我们用Android Lint扫描这个文件的话,在扫描结果中会出现如下错误:
2. 资源类型注解
我们知道,资源是以int整型表示,并保存在R.Java文件中。这就意味着在一个需要Layout资源值函数传入String字符串,在编译时不会报错,只有在运行时才会报错,为了防止这种情况的出现,可以使用资源类型注解。
资源类型的注解作用于函数参数、返回值及类的变量,每种资源类型对应一种注解。
AnimatorRes:标记整型值是android.R.animation类型。
AnimRes:标记整型是android.R.anim类型。
AnyRes:标记整型是任何一种资源类型,如果确切知道表示的是哪一个具体资源的话,建议显式指定。
ArrayRes:标记整型是android.R.array类型。
AttrRes:标记整型是android.R.attr类型。
BoolRes:标记整型是布尔类型。
ColorRes:标记整型是android.R.color类型。
DrawableRes:标记整型是android.R.drawable类型。
FranctionRes:标记整型值是fraction类型,这个比较少见,这种类型资源常见于Animation
Xml中,比如50%,表示占parent的50%IdRes:标记整型是android.R.id类型。
IntegerRes:标记整型是android.R.integer类型。
InterpolatorRes:标记整型是android.R.interpolator类型,插值器,在Animation
Xml中使用较多。LayoutRes:标记整型是android.R.layout类型。
MenuRes:标记整型是android.R.menu类型。
RawRes:标记整型是android.R.raw类型。
StringRes:标记整型是android.R.string类型。
StyleableRes:标记整型是android.R.styleable类型。
StyleRes:标记整型是android.R.style类型。
XmlRes