Android 常用注解

作者: developerChenxi | 来源:发表于2017-09-26 11:20 被阅读0次

    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)<Br/>
      @RequiresPermission(allOf={permision1,perminsion2})<Br/>
      @RequiresPermission(anyOf={permision1,perminsion2})

    重写方法注解

    @Target({METHOD})

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

    @CheckResult

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

    @VisibilityForTesting

    @Keep

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

    相关文章

      网友评论

        本文标题:Android 常用注解

        本文链接:https://www.haomeiwen.com/subject/fxksextx.html