Android 常用注解

Nullness注解

名称 参数 Target 含义
@Nullable - PARAMETER 可以为null
@NonNull - PARAMETER 不可为null

资源注解

资源注解的Target都是PARAMETER

名称 参数 含义
@AniamtorRes - R.ainimaor
@AnimRes - R.ainim
@AnyRes - 任意资源类型
@AttrRes - R.arry
@BoolRes - 布尔型
@ColorRes - R.color
@DrawableRes - R.drawable
@Fraction - 多用于Animation XML中,50%p
@IdRes - R.id
@InterpolatorRes - R.interpolator
@LayoutRes - R.layout
@MenuRes - R.menu
@PluralsRes - 表示复数类型字符串
@RawRes - R.raw
@StringRes - R.string
@StyleableRes - R.styleable
@StyleRes - R.style
@TransitionRes - 标记整型值是transition类型的
@XmlRes - R.xml

类型定义注解@IntDef

使用情景:

声明的一组int常量来表示类型,如果某方法只接收这几种常量,可以使用@IntDef; 如果某方法只要求返回这几种常量,可以使用@IntDef。

  • example1:

    注解定义:

@Retention(SOURCE)
@IntDef({ORIGINAL, PORTRAIT})//常量可声明在任意位置
public @interface MyType {
}
使用:
     public void setType(@MyType int type) {
        
    }
这如下方式使用时,则编译器会报错
    setType(8);
  • example2
@IntDef(flag = true, value = {ORIGINAL, PORTRAIT}) //常量可声明在任意位置
public @interface MyType {
}
使用:
     @MyType
     public int getType() {
        return 99; // 返回值与常量不相等,则报错
    }

线程注解

@Target({METHOD,CONSTRUCTOR,TYPE})

  • @UiThread @MainThread
  • @WorkerThread
  • @BinderThread

RGB 颜色值注解

@Target({PARAMETER,METHOD,LOCAL_VARIABLE,FIELD}

  • @ColorInt

值范围注解

@Target({METHOD,PARAMETER,FIELD,LOCAL_VARIABLE})

  • @Size

    源码:

    @Retention(CLASS)
@Target({PARAMETER,LOCAL_VARIABLE,METHOD,FIELD,ANNOTATION_TYPE})
public @interface Size {
        /** An exact size (or -1 if not specified) */
        long value() default -1;
        /** A minimum size, inclusive */
        long min() default Long.MIN_VALUE;
        /** A maximum size, inclusive */
        long max() default Long.MAX_VALUE;
        /** The size must be a multiple of this factor */
        long multiple() default 1;
}
    
对于数组、集合字符串之类的参数,可以用@Size来表示这些参数的大小

* @Size(min=1), 表示集不为空
* @Size(max=23),表示字符串最大字符个数是23
* @Size(2), 表示元素个数是2
* @Size(multiple=2), 数组大小是2的倍数
  • @IntRange
    @IntRange(from=2,to=10)
  • @FloatRange
    @FloatRange(from=0.0,to=1.0)

权限注解

@Target({ANNOTATION_TYPE,METHOD,CONSTRUCTOR,FIELD})

  • @RequiresPermission(permision)

    @RequiresPermission(allOf={permision1,perminsion2})

    @RequiresPermission(anyOf={permision1,perminsion2})

重写方法注解

@Target({METHOD})

  • @CallSuper 子类重写某个方法时,要求调用super,可以使用该注解

@CheckResult

提醒方法的调用者对方法的返回值进行检查

@VisibilityForTesting

@Keep

标记此类或方法不会被混淆

你可能感兴趣的:(Android 常用注解)