1.优点

  可以代替枚举,静态常量,可以让注解只在代码中存在,编译后就删除,可以省内存。

2.@IntDef

2.1 官网

  https://developer.android.com/reference/kotlin/androidx/annotation/IntDef.html

2.2 java示例

     //1.指定注解的保留策略,RetentionPolicy.SOURCE表示只保留源码中,编译时删除。还有CLASS和RUNTIME
@Retention(RetentionPolicy.SOURCE) //2.定义int 值 ,
//写法1: flag true表示可以用 MODE_STANDARD|MODE_LIST 或者 MODE_LIST & MODE_TABS 这种方式使用,然并卵 ,默认false
@IntDef(flag = true,value = {MODE_STANDARD, MODE_LIST, MODE_TABS})
//写法2:
//@IntDef({MODE_STANDARD, MODE_LIST, MODE_TABS}) //3.定义注解类型
public @interface MODE {
int MODE_STANDARD = ; //默认是 public static final
int MODE_LIST = ;
int MODE_TABS = ;
} //4.使用注解 示例
@MODE int getMode() { return MODE_STANDARD; }
void setMode(@MODE int m) { mode = m; }
int mode;
void testMode(){
int m1 = MODE_LIST;
int m2 = getMode();
setMode(m1);
m2 = getMode(); m2 = m1 | MODE_LIST & MODE_TABS ; }

2.3 kotlin示例

     //1.指定注解的保留策略,AnnotationRetention.SOURCE表示只保留源码中,编译时删除。还有CLASS和RUNTIME
@Retention(AnnotationRetention.SOURCE)
//2.定义int 值 ,
@IntDef(flag = true, value = [MODE_STANDARD, MODE_LIST, MODE_TABS])
//3.定义注解类型
annotation class MODE {
companion object {
const val MODE_STANDARD =
const val MODE_LIST =
const val MODE_TABS =
}
}
//4.使用注解 示例
fun resetMode(@MODE m: Int) {
mode = m
}
var mode: Int = fun testMode() {
val m1 = MODE_LIST resetMode(m1) var m2 = m1 or (MODE_LIST and MODE_TABS) }

3.@StringDef

3.1 官网

https://developer.android.com/reference/androidx/annotation/StringDef.html?hl=en

3.2 java示例

     //1.指定注解的保留策略,RetentionPolicy.SOURCE表示只保留源码中,
@Retention(RetentionPolicy.SOURCE) //2.定义string值 ,它必需在 注解类型 前。
@StringDef({CMD_A8, CMD_E5, CMD_H3}) //3.定义注解类型,
public @interface CMD {
public static final String CMD_A8 = "A8";
public static final String CMD_E5 = "E5";
public static final String CMD_H3 = "H3";
}
//4.使用
void sendData(@CMD String cmd,String data){
//... connect socket ,
// socket.send
}
//5.测试
void testStringDef(){
//sendData("cmd","data");//error ,"cmd"不是 定义的那几个值中的一个。
sendData(CMD_A8,"hello");
}

3.3 kotlin示例

     //1.指定注解的保留策略,AnnotationRetention.SOURCE表示只保留源码中,
@Retention(AnnotationRetention.SOURCE)
//2.定义string值 ,它必需在 注解类型 前。
@StringDef(A8,E5,H9)
//3.定义注解类型,
annotation class CMD {
companion object {
const val A8 = "A8"
const val E5 = "E5"
const val H9 = "H9"
}
} //4.使用
fun sendData(@CMD cmd: String, data: String) {
//... connect socket ,
// socket.send
} //5.测试
fun testStringDef() {
sendData("cmd","data");//error ,"cmd"不是 定义的那几个值中的一个。
sendData(A8, "hello")
}

Contextual Action bar(1) CAB in Android的更多相关文章

  1. Contextual Action bar(3) 两个示例

    一.通过activity启动Context Action Bar 1.主java public class ActivityActionModeFrgmt extends Fragment imple ...

  2. Contextual Action bar(2) 简介,启动,各函数介绍

    一.Context Action Bar简介 它是一个ActionBar,有各种操作项,但它不是始终显示的ActionBar,它需要上下文才显示.样式如下: 二.Context Action Bar的 ...

  3. Android Contextual Menus之二:contextual action mode

    Android Contextual Menus之二:contextual action mode 接上文:Android Contextual Menus之一:floating context me ...

  4. Android设计和开发系列第二篇:Action Bar(Design)

    Action Bar The action bar is a dedicated piece of real estate at the top of each screen that is gene ...

  5. Android系统UI交互控件Action Bar初探

    过年期间,Google正式宣布取消Android系统中MENU键的使用,也就是基于Android 4.0系统的手机都应没有MENU这一固定按键.这无疑是个变革性的改动,在我眼中,这似乎把Android ...

  6. Android设计和开发系列第二篇:Action Bar(Develop—API Guides)

    Action Bar IN THIS DOCUMENT Adding the Action Bar Removing the action bar Using a logo instead of an ...

  7. Android UI开发第二十四篇——Action Bar

    Action bar是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式.在大多数的情况下,当你需要突出展现用户行为或全局导航的activity中使用action bar,因为acti ...

  8. 【转】Android UI开发第二十四篇——Action Bar

    Action bar是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式.在大多数的情况下,当你需要突出展现用户行为或全局导航的activity中使用action bar,因为acti ...

  9. Android学习路径(七)建立Action Bar

    在action bar最今本的形式中,它只在左边展示了activity的标题以及应用的icon. 即使在这样的简单的形式中,它也不过告诉用户如今在应用的哪个activity中,同一时候为你的应用保持一 ...

随机推荐

  1. Git 和 SVN 之间的五个基本区别

    GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等.如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征.所以,这篇文章的主要目的就是 ...

  2. Safair css hack

    一下方式不会影响chrome浏览器样式 _::-webkit-full-page-media, _:future, :root .class{ /*此处放css样式*/ }

  3. Vue.js新手入门指南

    最近在逛各大网站,论坛,以及像SegmentFault等编程问答社区,发现Vue.js异常火爆,重复性的提问和内容也很多,楼主自己也趁着这个大前端的热潮,着手学习了一段时间的Vue.js,目前用它正在 ...

  4. 分享一个好用的函数吧,将js中的对象转成url参数

    JavaScript&jQuery获取url参数方法 这个函数呢是自己在写基于Vue+ElementUI管理后台时用到的,,下面列出来两种使用方式: 最普通的,封装一个js函数 /** * 对 ...

  5. YTU 2442: C++习题 矩阵求和--重载运算符

    2442: C++习题 矩阵求和--重载运算符 时间限制: 1 Sec  内存限制: 128 MB 提交: 1457  解决: 565 题目描述 有两个矩阵a和b,均为2行3列.求两个矩阵之和.重载运 ...

  6. 如何去掉idea里mybatis的.xml文件 sql 语句背景色

    点击有背景的地方 Alt+Enter选择 un-inject Language/refence 即可去掉

  7. Linux 下WAS的java版本查看

    1.查找linux的详细版本号: A.cat /proc/version B.lsb_release -a(可以查出是否为redhat开发的) C.uname -a 2.Linux的java版本 A. ...

  8. Watir: 如果安装sougou浏览器,有可能导致Watir不能工作

    如果安装了搜狗,Watir::Browser.new并不一定能打开新的IE浏览器.这种情况下,必须卸载搜狗浏览器,当然,attach,find方法还是可以用的

  9. Oracle 11G for redhat 自启动脚本

    在$ORACLE_HOME/bin中,有dbstart和dbshut这两个脚本,可以使用这两个oracle自带的脚本实现oracle的开机自启动.这个脚本中包含oraclelistener.insta ...

  10. In-App Purchase Programming Guide----(七) ----Restoring Purchased Products

    Restoring Purchased Products Users restore transactions to maintain access to content they’ve alread ...