博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 随笔——Android必须知道的注解Annotations
阅读量:6903 次
发布时间:2019-06-27

本文共 2525 字,大约阅读时间需要 8 分钟。

转载请标明地址 QuincySx:

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

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


@NonNull

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

@Overrideprotected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        hello("sss"); //正常调用没有问题        hello(null); //当这样写的写的时候编译器报了个警告}//一个普通的方法public void hello(@NonNull String s) {}复制代码

警告不能为空

@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;@Overrideprotected 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() 去取,有的则不需要,下面看源码

@Overrideprotected 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

你可能感兴趣的文章
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 120: illegal multibyte sequence
查看>>
django 笔记
查看>>
Mac下多版本JDK安装
查看>>
记录一则RMAN恢复到历史备份(多个incarnation)
查看>>
『OpenCV3』Mat简介
查看>>
css3-11 如何设置文字的阴影
查看>>
【转】缓存几个重要概念
查看>>
【转】聊聊网络游戏同步那点事
查看>>
Qt之QDomDocument操作xml文件-模拟ini文件存储
查看>>
oracle的中文排序问题
查看>>
设置背景图片
查看>>
【WPF】ComboBoxItem的禁用
查看>>
python 特征缺失值填充
查看>>
2018摩拜算法工程师笔试题
查看>>
golang程序在windows上,注册为服务
查看>>
Spring Cloud Eureka 常用配置及说明
查看>>
使用MiniProfiler调试ASP.NET web api项目性能
查看>>
学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面
查看>>
swift 泛型的类型约束
查看>>
上线几天后,出现问题,这锅谁来背呢?
查看>>