Android注解学习(1)

摘要:
12@ViewInject3privateListViewlv_test1 ; 45678@Override9protectedvoidonCreate{10super.onCreate;11setContentView;1213}以下要点是理解注释所使用的概念和语法。androidapi官方网站描述它属于java。lang包和三段内容被描述为元注释、接口和枚举;以下主要介绍了元注释:1.注释——元注释1)Documented——定义了用于表示注释的元注释,并被视为公共接口的一部分。Documented是一个标记注释,没有成员。2) Inherited——定义用于表示注释的自动继承的元注释。1/**2*初始化findviewbyid注释3*/4publicvoinitView{5//获取字段6Field[]fields=windowobj.getClass().getDeclaredFields();7if(fields!=null&&fields.length˃0)!

对于注解这个概念刚开始不是很理解,翻阅了其他人博客,参考实现的例子开始理解与运用。以前刚开始的写android项目时,一般找定义控件并初始化控件都是调用findviewbyId,然而当一个布局页面(类似提交表单页面)下控件特别多时代码就会显得臃肿,也不方便后续维护 。后面,别人推荐下去用xutils框架发现提供注解去绑定控件,我感觉对于注解直观来看他把声明与绑定控件合在一起,代码清晰好多。有没有?

 1     
 2     @ViewInject(id = R.id.lv_test1)
 3     private ListView lv_test1;
 4     
 5  
 6 
 7 
 8     @Override
 9     protected void onCreate(Bundle savedInstanceState) {
10         super.onCreate(savedInstanceState);
11         setContentView(R.layout.activity_main);
12 
13     }

下面重点需要了解注解使用的概念与语法

android api 官网描述的可以看到它是属于java.lang包下并三块内容来描述分别为元注解,接口,枚举;

下面主要介绍元注解:

1.Annotations--元注解

1)Documented--定义一个用于表示一个注释的元注解,并被认为是公共接口的一部分。Documented是一个标记注解,没有成员。

2)Inherited--定义一个用于表示注释自动继承的元注解。

3)Retention--定义用于确定注释的保留范围的元注解。(即:被描述的注解在什么范围内有效)

4)Target--定义确定什么ElementType注释可用于元注解。(即:被描述的注解可以用在什么地方)

可以参考(深入理解Java:注解(Annotation)自定义注解入门

Android注解学习(1)第1张

2.用法看下面如下:

 1 import java.lang.annotation.ElementType;
 2 import java.lang.annotation.Retention;
 3 import java.lang.annotation.RetentionPolicy;
 4 import java.lang.annotation.Target;
 5 
 6 @Target(ElementType.FIELD)
 7 @Retention(RetentionPolicy.RUNTIME)
 8 public @interface ViewInject {
 9     public int id();
10 }
@Target(ElementType.FIELD)--指该注解用于字段

@Retention(RetentionPolicy.RUNTIME)--指作用在运行时

定义注解格式:
  public @interface 注解名 {定义体}

那如何将自定义的注解与控件绑定在一起?
 1 /**
 2      * 初始化findviewbyid注解
 3      */
 4     public void initView(Object windowobj) {
 5         //获取windowobj对象所在类声明的字段
 6         Field[] fields = windowobj.getClass().getDeclaredFields();
 7         if (fields != null && fields.length > 0) {
 8             for (Field field : fields) {
 9                 try {
10                     //并不是将方法的访问权限改成了public,而是取消java的权限控制检查
11                     field.setAccessible(true);
12                     if (field.get(this) != null)
13                         continue;
14                     //获取有ViewInject字段的注解对象
15                     ViewInject viewInject = field
16                             .getAnnotation(ViewInject.class);//
17                     if (viewInject != null) {
18                         int viewId = viewInject.id();
19                         //将该字段与控件进行绑定
20                         field.set(this, findViewById(viewId));
21                     }
22                 } catch (Exception e) {
23                     e.printStackTrace();
24                 }
25             }
26         }
27     }

免责声明:文章转载自《Android注解学习(1)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ubuntu apt 安装mysql 5.7排查Java高CPU占用原因下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

android简易双屏支持【转】

本文转载自:http://blog.csdn.net/sfrysh/article/details/7463339 抱歉,之前说xorg的exa更新的时候恐怕一直不会更新了,没有做xorg开发了。转向android了。最近断断续续做了一些杂七杂八的android事情,都是一些不太容易的事情。简单的写了以下,android双屏的简易支持。纲领性的一些东西吧。...

几个Android云测试

转自:http://www.chenwg.com/android/%E5%87%A0%E4%B8%AAandroid%E4%BA%91%E6%B5%8B%E8%AF%95.html 现在国内国外都有一些公司在做Android云测试,也就是你上传你的apk上去,然后它会自动在多种机型上测试,这样一方面减少我们的成本(不然你买真机都买穷你了),又很方面,有截图...

Android视频播放和横竖屏切换

  最近做了一个项目,里面用到了视频播放这一块,当时想考虑Vitamio,demo也做了出来,但是后来发现它是商业收费的,并且收费相当可观,所以只能放弃了。然后找到了ijkPlayer,功能也很强大,最终选择了Wei_Leng基于ijkPlayer开发的superPlayer,在这里也要感谢一下这位无私的博主,贴下他的链接superPlayer 但是因为...

【转载】Android属性动画和视图动画的区别

提起动画首先想到的是动画片,童年最爱的黑猫警长,葫芦娃,邋遢大王,大脸猫和蓝皮鼠,四驱兄弟,七龙珠等等,当时觉着好神奇,他们是怎么动的呢。动画其实就是一帧帧的画面顺序播放,只要画面切换的够快,会我们眼中形成视觉残留的效果,人眼不会感觉到突兀也就会认为画面是连续运动的,至于24帧什么的这里就不说了,现在的手机普遍支持60帧每秒,微鲸的vr设备好像87帧每秒...

Android系统架构(图解)

下图是 Android 操作系统的架构,架构包括 4 层,由上到下依次是应用程序层、应用程序框架层、核心类库和 Linux 内核。其中,核心类库中包含系统库及 Android 运行环境。 图1  Android 操作系统的架构 应用程序层 Android 装配了一个核心应用程序集合,包括 E-mail 客户端、SMS 短消息程序、日历、地图、浏览器、联...

Crash监控的简单实现方案

个人博客 http://www.milovetingting.cn Crash监控的简单实现方案 前言 本文从Java层及Native展开,简单记录Android中的Crash监控方案。 Java层Crash Java层的crash监控,可以通过实现Thread.UncaughtExceptionHandler接口,重写uncaughtExceptio...