Support Annotation Library使用详解
Support Annotation Library是从Android Support Library19.1开始引入的一个全新的函数包。包含一系列的元注解,用来帮助开发者在编译间发现可能存在的bug。
下面我们看看都有哪些注解吧!
1、Nullness注解
- @Nullable 作用于函数参数或返回值,标记参数或返回值可以为空。
- @NonNull 同上,但标记参数或返回值不能为空。
2、资源类型注解
资源在Android通常是以整型值表示的,并保存在R.java中。资源类型的注解作用于函数参数、返回值及类的变量,在support-annotations-23.1.1中,每一个资源类型对应一个注解。
- AnimatorRes:标记整型值是android.R.animator类型;
- AnimRes:标记整型值是android.R.anim类型;
- AnyRes:标记整型值是任何一种资源类型,如果确切知道表示的是哪一种具体资源的话,建议使用显式指定;
- ArrayRes:标记整型值是android.R.array类型;
- BoolRes:标记整型值是布尔类型;
- ColorRes:标记整型值是android.R.color类型;
- DrawableRes:标记整型值是android.R.drawable类型;
- FractionRes:标记整型值是fraction类型,这个比较少见,这种类型资源常见于Animation XML中,比如50%p,表示占parent的50%;
- IdRes:标记整型值是android.R.id类型,常见资源;
- IntegerRes:标记整型值是android.R.integer类型;
- Interpolator:标记整型值是android.R.interpolator类型;
- MenuRes:标记整型值是android.R.menu类型;
- LayoutRes:标记整型值是android.R.layout类型;
- PlursRes:标记整型值是android.R.plurals类型,表示复数字符串类型;
- RawRes:标记整型值是android.R.raw类型;
- StringRes:标记整型值是android.R.string类型;
- StyleableRes::标记整型值是android.R.styleable类型;
- StyleRes:标记整型值是android.R.style类型;
- TransitionRes:标记整型值是android.R.transition类型;
- XmlRes:标记整型值是android.R.xml类型;
3、类型定义注释
- @IntDef 注释用来创建一个整型类型定义的新注释,我们可以用这个新注释来标记自己编写的api;
4、线程注释
- @UIThread :标记运行在UI线程。一个UI线程是一个activity运行所在的主窗口,对于一个应用而言,可能存在多个UI线程,每个UI线程对应不同的窗口;
- @MainThread:标记运行在主线程。一个应用只有一个主线程,主线程也是@UIThread线程,通常情况下,我们使用@MainThread来注释生命周期相关函数,使用@UIThread来注释视图相关函数,一般情况下,@MainThrea和@UIThread是可以互换使用的;
- @WorkerThread:标记运行在后台的线程;
- @BinderThread:标记运行在Binder线程;
5、RGB颜色注释
- @ColorInt:标记参数类型需要传入RGB或者ARGB颜色整型值;
6、值范围注释
- @Size:对于类似数组、集合和字符串之类的参数,该注释表示这些参数的大小;如:@Size(2) 可以表示数组元素个数是2;
- @IntRange:参数类型是int或者long;
- @FloatRange:参数类型是float或double;
7、权限注解
- @RequiresPermission:为了在 编译期间及时发现缺失的权限,可使用该注释;
8、重写函数注释
- @CallSuper:如果api允许调用者重写某个函数,但同时要求重写的函数需要调用被重写的函数,否者代码逻辑会错误,那么可以使用@CallSuper注释来提示开发者;
9、返回值注释
- @CheckResult:如果我们编写的函数需要调用者对返回值做某些操作,那么可以使用@CheckRrsult来提示开发者
10、@VisibleForTesting:单元测试中可能需要访问到一些不可见的类、函数、变量,这时可以使用@VisibleForTesting注释来使其对测试可见;
11、@Keep:用来标记在Proguard混淆过程中不需要混淆的类或者方法;
Support Annotation Library使用详解相关推荐
- Android Support Annotation Library使用详解
概述 Support Annotation Library是在Android Support Library19.1版本开始引入的一个全新的函数包,它包含了诸多有用的元注解.用来帮助开发者在编译期间发 ...
- Android进阶系列之Support Annotation Library使用详解
*本篇文章已授权微信公众号 hongyangAndroid (鸿洋)独家发布 在Android开发中,注解使用那是相当之频繁,对于没有了解过注解的猿友来说,看起来那是相当费劲儿.那今天我就来详细的瞅瞅 ...
- Support Annotation Library 使用详解
Support Annotation Library 是提供了一系列元注解,用来帮助开发者在编译期间发现可能存在的BUG. 1. Nullness 注解 此类注解包含 : @Nullable 作用于函 ...
- Support Annotation Library 总结
Support Annotation Library 是一个元注解包,它主要用来帮助开发者在编译期间发现可能存在的BUG. 其原理就是通过注解标记的方式,标记传参和返回,从而启动规范传参和返回的作用. ...
- Java编译时注解处理器(Annotation Processor)详解
上篇文章我们使用注解+反射实现了一个仿ButterKnife功能的示例.考虑到反射是在运行时完成的,多少会影响程序性能.因此,ButterKnife本身并非基于注解+反射来实现的,而是用Annotat ...
- Servlet3.0新特性WebFilter(Annotation Filter)详解
摘要: Servlet3.0作为J2EE 6规范一部分,并随J2EE6一起发布,WeFilter是过滤器注解,是Servlet3.0的新特性,不需要在web.xml进行配置,简化了配置. Name T ...
- Spring @transactional annotation 事务使用详解
来源:http://www.yihaomen.com/article/java/412.htm annotation 方式写程序越来越称谓主流了,以前用hibernate 也用 xml 一大堆配置文件 ...
- Java Annotation自定义注解详解
在开发过程中总能用到注解,但是从来没有自己定义过注解.最近赋闲在家,研究整理了一番,力求知其然知其所以然. 本文会尝试描述什么是注解,以及通过一个Demo来说明如何在程序中自定义注解.Demo没有实际 ...
- Library Module详解
Create an Android Library 原文:https://developer.android.com/studio/projects/android-library.html Andr ...
最新文章
- ISME: 北大吴晓磊课题组揭示合作演化新机制:“自私”驱动合作关系的建立?...
- 解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json
- 黑马lavarel教程---9、缓存操作
- Python 编程快速上手 第十五章 保持时间,计划任务和启动程序
- Java生成CRC16数据校验码
- 'pip3' 不是内部或外部命令,也不是可运行的程序或批处理文件
- 工业以太网交换机可以家用吗?
- 基于Nokia S60的游戏开发之二
- (王道408考研数据结构)第二章线性表-第三节1:单链表的定义及其操作(插入和删除,建立之尾插和头插)
- linux DNS安装配置
- CAN笔记(23) CanFestival移植
- 安装torchvision时,报错error: command ‘aarch64-linux-gnu-gcc‘ failed with exit status 1
- 《计算机网络 自顶向下方法》(第7版)答案(第九章)
- 面试常见的八股文记录
- 程序员初学者应该如何自学编程
- 解决win10+Ubuntu20.0.4双系统,win10时间错误问题
- mac系统我的世界服务器,我的世界Mac版怎么联机?
- js-js数据结构和算法-递归思想-斐波那契数-动态规划-贪心
- java实现抽奖游戏,java实现抽奖功能解析
- 超高频RFID服装供应链管理系统
热门文章
- rubymine remote远程linux 并同步代码
- 【脱普】电阻分类、电阻常用参数、贴片电阻封装、电阻功能、阻值识读
- 计蒜客 家谱 vector临接矩阵+dfs
- java自动转换需要的开头_【Java基础】Java把\u开头的Unicode编码转换成汉字
- NOIP 2013 提高组初赛 青蛙跳荷叶
- Linux和PHP 开发参考消息 php博文+Linux镜像+http服务器+存储技术+框架+视频+好书+通信...
- 10086视频客服所需要的技能点
- 结构性模型——组合模式
- MMDetection的学习笔记
- 喜提北极代码库贡献者勋章(Arctic Code Vault Contributor)