Android:随笔——Android必须知道的注解Annotations

简介: 转载请标明地址 QuincySx: http://www.jianshu.com/p/95b8ae42289c先讲一下这是什么 这个算是一种注解辅助的库,在我们合作开发的时候进行一定的约束,我这样说大家可能不太理解,大家继续往下看自行理解一下这...

转载请标明地址 QuincySx: http://www.jianshu.com/p/95b8ae42289c

先讲一下这是什么 这个算是一种注解辅助的库,在我们合作开发的时候进行一定的约束,我这样说大家可能不太理解,大家继续往下看自行理解一下
这个库就在我们的 v7 包里面,基本每个项目都会引入,可能只是大家没用到而已 如图

img_400c923635fb4f6719340eff7606e81a.png

今天我要写的就是把这类里面我自己比较常用的 一些注解 给大家分享一下


@NonNull

首先看一下 @NonNull 注解他的意思是参数不能为空的意思


@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        hello("sss"); //正常调用没有问题

        hello(null); //当这样写的写的时候编译器报了个警告
}

//一个普通的方法
public void hello(@NonNull String s) {

}
img_18d3b835388088e231ed52a78616a60a.png

警告不能为空

@UiThread

这个注解的意思是该方法在主线程下运行

 @UiThread
    public void hello1() {

    }

资源文件类的注解

然后下面这些一块说
@AnimatorRes @ColorRes @DimenRes @DrawableRes @LayoutRes 等等 像这样以 Res 结尾的 注解表示这些参数 只能是资源文件 下面用 @ColorRes 举个例子

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setColor(12);  //报错 Expected resource of type color
        
        setColor(R.color.colorPrimary);  //不报错没有问题
    }

    //只允许设置资源里面的颜色
    public void setColor(@ColorRes int color) {

    }

其他的与上面用法基本相同,因为参数都是 Int 类型的,传的时候可能会有些困扰,这个库就可以解决这些问题

@IntDef

光有 Android 自带的 Int 类型过滤,这个注解可以进行自定义 示例:

public final static int LOADING = 10;
public final static int SUCCESS = 11;

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setStatus(LOADING);  //没有问题
        
        // 以下这两种方式都会显示错误
        setStatus(10); 
        setStatus(1); 
}

@IntDef({LOADING , SUCCESS })
public @interface TestStatus{
}

//只允许设置资源里面的颜色
public void setStatus(@TestStatus int status) {

}

其他补充

下面再说一点题外话 对于Android的颜色 我也是看到 @ColorRes @ColorInt 这两个注解,才研究了一下,之前对于设置背景的 Color 参数 都是 Int 类型,为什么有的需要 getResources() 去取,有的则不需要,下面看源码

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setColorInt(Color.BLUE);  //直接传 Java 里面的颜色

        setColorInt(Color.parseColor("#cccccc"));  //把 HTML 样式的颜色转换过来使用

        setColorInt(0XFFCCCCCC);  // 这种方式要简单说一下了 前两位 0X 是固定的,小写也没有关系,然后是后面两位 FF 这是表示颜色透明度,后面 6 位代表颜色值,他与上面的写法效果是一样的

        setColor(R.color.colorPrimary);  //使用资源文件里面的颜色
}

public void setColor(@ColorRes int color) {
        //用资源文件里面的颜色需要对颜色进行转换一下,在对控件进行使用
        mTextView.setBackgroundColor(getResources().getColor(color));
}

public void setColorInt(@ColorInt int color) {
        //对颜色的值可以直接进行使用
        mTextView.setBackgroundColor(color);
}

总结

很简单的知识点,但是使用频率还是很高的
本人技术水平有限,如有错误还请指出

本文已在版权印备案,如需转载请访问版权印。29666966

目录
相关文章
|
Java API Android开发
【错误记录】Android 注解处理器报错 ( 非法的类文件开始 , 请删除该文件或确保该文件位于正确的类路径子目录中。 )
【错误记录】Android 注解处理器报错 ( 非法的类文件开始 , 请删除该文件或确保该文件位于正确的类路径子目录中。 )
601 0
【错误记录】Android 注解处理器报错 ( 非法的类文件开始 , 请删除该文件或确保该文件位于正确的类路径子目录中。 )
|
10月前
|
存储 Java Android开发
Android的配置文件操作的完美封装(使用注解 反射让配置文件操作如此清晰和简单)
Android的配置文件操作的完美封装(使用注解 反射让配置文件操作如此清晰和简单)
|
Java 编译器 开发工具
Android高阶用法:注解处理器APT用法详解
注解在我们`android`开发和`java`开发中有很多作用,今天我们就来介绍下他的一种高级用法:**注解处理器**
|
Java Android开发
Android中 @CallSuper注解
Android中 @CallSuper注解
|
ARouter Java Android开发
Android 组件化(二)注解与注解处理器、组件通讯
在上一篇文章中,我们完成了组件的创建、gradle统一管理、组件模式管理和切换,那么这一篇文章,我们需要做的就是组件之间的通讯了。
209 0
Android 组件化(二)注解与注解处理器、组件通讯
|
监控 Android开发
【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行 ( 定义连接点注解 | 定义 Aspect 切面 | 定义切入点 | 逐个处理切入点的各个连接点 )(二)
【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行 ( 定义连接点注解 | 定义 Aspect 切面 | 定义切入点 | 逐个处理切入点的各个连接点 )(二)
139 0
【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行 ( 定义连接点注解 | 定义 Aspect 切面 | 定义切入点 | 逐个处理切入点的各个连接点 )(二)
|
监控 Java Android开发
【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行 ( 定义连接点注解 | 定义 Aspect 切面 | 定义切入点 | 逐个处理切入点的各个连接点 )(一)
【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行 ( 定义连接点注解 | 定义 Aspect 切面 | 定义切入点 | 逐个处理切入点的各个连接点 )(一)
321 0
|
Android开发
【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取 Activity 中的所有方法 | 获取方法上的注解 | 获取注解上的注解 | 通过注解属性获取事件信息 )
【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取 Activity 中的所有方法 | 获取方法上的注解 | 获取注解上的注解 | 通过注解属性获取事件信息 )
120 0
|
Java Android开发 Spring
【IOC 控制反转】Android 事件依赖注入 ( 事件三要素 | 修饰注解的注解 | 事件依赖注入步骤 )
【IOC 控制反转】Android 事件依赖注入 ( 事件三要素 | 修饰注解的注解 | 事件依赖注入步骤 )
197 0
|
Android开发
【Android 组件化】路由组件 ( 运行时获取 注解处理器 生成的路由表 )(二)
【Android 组件化】路由组件 ( 运行时获取 注解处理器 生成的路由表 )(二)
97 0