Android Support库——support annotations

  Android Support库是官方出的支持扩展库,包含了丰富的组件、工具类等,经过在Android SDK Manager中勾选如下两项来获取到。
这里写图片描述
  其中,Android Support Library下载的是对应的源码或jar包,在使用Eclipse时会从这里拷贝出须要的文件到项目中。而Android Support Repository下载的是这个support库所对应的本地Maven库。若是你是使用Gradle进行构建(如Android Studio),并经过远程依赖的方式来使用support库的话,则须要下载它,才能获取到对应的依赖。
  如上面所说,Android support库包含了众多有用的类库,包括目前基本在项目中都会用到的support-v4包。而本序列第一篇要讲的是,除此support-v4库以外,咱们用得特别多的一个库:android-support-annotations。
  因为我所使用的是Android Studio,因此对于Eclipse相关的知识在本篇及后续博客中都会略过不谈。android

  android-support-annotations是Android官方提供的一个注解库,它提供了许多有用的注解,这些注解的生命周期为源码时期,也就是在编译以后则再也不保留,一般用于辅助代码上的静态检查。
  在Gradle中引入这个库的方式一般以下:bash

  compile 'com.android.support:support-annotations:23.1.1'

  可是若是你已经经过这种方式依赖了support-v4库的话,则没必要再显式声明依赖它,由于support-v4也依赖于这个库,因为Gradle的传递依赖的特性,你的项目若是依赖了support-v4库的话,也会依赖到这个注解库。
  经过使用support-annotations的注解,咱们能够限定一些变量、方法参数或者是方法返回值的范围,这些注解涵盖的使用范围以下:
  微信

22个资源类注解:

  • AnimatorRes :指出一个integer的参数,成员变量,或方法返回值是一个animator资源的引用。
  • AnimRes:指出一个integer的参数,成员变量,或方法返回值是一个anim资源的引用。
  • AnyRes:指出一个integer的参数,成员变量,或方法返回值是一个任意资源类型的引用。
  • ArrayRes:指出一个integer的参数,成员变量,或方法返回值是一个array资源类型的引用。
  • AttrRes:指出一个integer的参数,成员变量,或方法返回值是一个attr资源的引用。
  • BoolRes:指出一个integer的参数,成员变量,或方法返回值是一个boolean资源的引用。
  • ColorRes:指出一个integer的参数,成员变量,或方法返回值是一个color资源的引用。
  • DimenRes:指出一个integer的参数,成员变量,或方法返回值是一个dimen资源的引用。
  • DrawableRes:指出一个integer的参数,成员变量,或方法返回值是一个drawable资源的引用(包括@mipmap)。
  • FractionRes:指出一个integer的参数,成员变量,或方法返回值是一个fraction资源的引用。
  • IdRes:指出一个integer的参数,成员变量,或方法返回值是一个id资源的引用。
  • IntegerRes:指出一个integer的参数,成员变量,或方法返回值是一个integer资源的引用。
  • InterpolatorRes:指出一个integer的参数,成员变量,或方法返回值是一个interpolator资源的引用。
  • LayoutRes:指出一个integer的参数,成员变量,或方法返回值是一个layout资源的引用。
  • MenuRes:指出一个integer的参数,成员变量,或方法返回值是一个menu资源的引用。
  • PluralsRes:指出一个integer的参数,成员变量,或方法返回值是一个plurals资源的引用。
  • RawRes:指出一个integer的参数,成员变量,或方法返回值是一个raw资源的引用。
  • StringRes:指出一个integer的参数,成员变量,或方法返回值是一个string资源的引用。
  • StyleableRes:指出一个integer的参数,成员变量,或方法返回值是一个styleable资源的引用。
  • StyleRes:指出一个integer的参数,成员变量,或方法返回值是一个style资源的引用。
  • TransitionRes:指出一个integer的参数,成员变量,或方法返回值是一个transition资源的引用。
  • XmlRes:指出一个integer的参数,成员变量,或方法返回值是一个xml资源的引用。

颜色注解:

  假如咱们定义了一个方法用来设置颜色,可是由于表示颜色用的是int类型,这样就会致使使用的人没法区分是要传一个表示颜色的资源仍是颜色值,对于这种状况,support-annotations给咱们提供了如下这个注解:markdown

  • ColorInt:指出一个被注解的元素,是一个int颜色值,表示的是AARRGGBB

4个线程相关的注解:

  • BinderThread:指出被注解的方法应该只在binder线程中被调用。
  • MainThread:指出被注解的方法应该只在主线程中被调用。
  • WorkerThread:指出被注解的方法应该只在工做线程中被调用。
  • UiThread:指出被注解的方法应该只在UI线程中被调用。

关于这四个注解的差别,可参见stackoverflow的回答:Difference between MainThread, UiThread, WorkerThread, BinderThread in Android Annotation工具

其余方法相关的注解:

  • CallSuper:指出一个方法若是被重写了,它必须也被调用。好比Activity的生命周期方法onCreate方法等。
  • CheckResult:指出一个方法返回的结果一般是否为一个忽略的错误。好比删除文件:new File("xx").delete();
  • Keep:指出一个方法在被混淆的时候应该被保留。

取值范围的注解:

  • FloatRange:指出一个被注解的元素应该是一个给定范围内的float值或double值。好比:
@FloatRange(from=0.0,to=1.0)
    public float getAlpha() {
        ...
    }
  • IntRange:指出一个被注解的元素应该是一个给定范围内的int值或long值。
  • IntDef:指出一个int类型的元素,它表示的是一个逻辑上的类型,而且它的值必须是被明确声明的常量之一。官方常使用这种方式使int类型代替enum类型。
  • StringDef:指出一个String类型的元素,它表示的是一个逻辑上的类型,而且它的值必须是被明确声明的常量之一。

空指针检查

  一般咱们若是对一个变量进行主动的赋值为null,编译器可能会进行可能引起空指针异常的警告,咱们可使用如下注解对这种行为进行控制。
- NonNull:指出一个参数,变量,或方法返回值永远不可为null。
- Nullable:指出一个参数,变量,或方法返回值可能为null。测试

其余注解:

  • Size:表示一个被注解的元素应该有一个给定的大小或长度。
  • VisibleForTesting:可注解一个类,方法,或变量,表示有更宽松的可见性,这样它可以有更宽泛的可见性,使代码能够被测试。

  本文原创,转载请注明出处。
  关于博文内容,若有遗误错讹,欢迎指出。若是你以为写得还能够,欢迎微信扫描左侧栏底部二维码进行打赏。ui

相关文章
相关标签/搜索