资源类注解:
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给我们提供了以下这个注解:
ColorInt
:指出一个被注解的元素,是一个int颜色值,表示的是AARRGGBB
。
线程相关的注解:
BinderThread
:指出被注解的方法应该只在binder线程中被调用。MainThread
:指出被注解的方法应该只在主线程中被调用。WorkerThread
:指出被注解的方法应该只在工作线程中被调用。UiThread
:指出被注解的方法应该只在UI线程中被调用。
其他方法相关的注解:
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。
public static PullToRefreshBase<ZXP> wrapWithPullToRefreshScrollView(
@NonNull View content) {
其他注解:
自定义注解:
public static final int STATE_UNSPECIFIED = -1;
public static final int STATE_LOADING = 0;
public static final int STATE_OK = 1;
public static final int STATE_EMPTY = 2;
public static final int STATE_ERROR = 3;
@Status
private int mStatus = -1;
@IntDef({STATE_LOADING, STATE_OK, STATE_EMPTY, STATE_ERROR})
@Retention(RetentionPolicy.SOURCE)
public @interface Status { }