Androidannotations框架
Java注解:
注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
2、简化的线程模型(Simplified threading model)
3、事件绑定(Event binding)
4、REST Client
5、No Magic [不知道为什么这样称呼,直译过来就是:无魔法,它的意思是:AndroidAnnotations在编译
的时候会产生一个子类(接下来你会明白),你查看这个子类,可以看到它是如何工作的]
AndroidAnnotations官网: http://androidannotations.org/
代码:
- @NoTitle //无标题
- @Fullscreen //全屏
- @EActivity(R.layout.activity_my)
- public class MyActivity extends ActionBarActivity {
- //==============================================基本的注解=================================================
- @ViewById
- Button button1;
- @ViewById
- Button button2;
- @ViewById(R.id.textview1) //指定id的注入
- TextView textView;
- @ViewById
- ProgressBar progressBar;
- @ViewById
- ImageView imageView;
- //获取系统service的方法(取代原来的clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);)
- @SystemService
- ClipboardManager clipboardManager;
- @Click({R.id.button1,R.id.button2,R.id.button3,R.id.button4})
- public void simpleButtonOnClicked(View view){
- switch (view.getId()){
- case R.id.button1:{
- textView.setText("Button1 is Clicked!");
- }
- break;
- case R.id.button2:{
- textView.setText("Button2 is Clicked!");
- }
- break;
- case R.id.button3:{
- String content = clipboardManager.getText().toString();
- Toast.makeText(getApplicationContext(),"剪贴板内容: " + content, Toast.LENGTH_SHORT).show();
- }
- break;
- case R.id.button4:{
- Toast.makeText(getApplicationContext(),"滚动条开始了!",Toast.LENGTH_SHORT).show();
- progressBarWorks();
- }
- break;
- }
- }
- @LongClick({R.id.button2})
- public void buttonOnLongClicked(View view){
- switch (view.getId()){
- case R.id.button1:{
- textView.setText("Button1 is LongClicked!");//由于没注册,所以不可能被触发
- }
- break;
- case R.id.button2:{
- textView.setText("Button2 is LongClicked!");//可触发
- }
- break;
- }
- }
- //===================================================关于资源的注解=========================================
- @AnimationRes(R.anim.rotate)
- Animation animationRotate;
- @DrawableRes(R.drawable.myphoto)
- Drawable myphoto;
- @ColorRes(R.color.love)
- Integer mycolor;
- @TextRes(R.string.textres)
- CharSequence text;
- @Click({R.id.button5,R.id.button6,R.id.button7})
- public void animationButtonOnClicked(View view){
- switch (view.getId()){
- case R.id.button5:{
- imageView.startAnimation(animationRotate);
- }
- break;
- case R.id.button6:{
- imageView.setImageDrawable(myphoto);
- }
- break;
- case R.id.button7:{
- Toast.makeText(getApplicationContext(),text.toString(),Toast.LENGTH_SHORT).show();
- }
- break;
- }
- }
- //==============================================关于线程的注解================================================
- //相当于一个新的任务AsyncTask或者新线程Thread
- @Background
- public void progressBarWorks(){
- //相当于一个新的线程中执行: @Background
- int i = 1;
- while (i <= 10){
- Log.e("progress","进度: " + i);
- try {
- Thread.sleep(1000);
- updateProgressBar(i);
- //直接progressBar.setProgress(i);也可以的,所以@Background注解内部可能实现了handler机制
- i++;
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- //指代UI线程
- @UiThread
- public void updateProgressBar(int i){
- progressBar.setProgress(i);
- if (i == 10){
- Toast.makeText(getApplicationContext(), "滚动条结束",Toast.LENGTH_SHORT).show();
- }
- }
- //=======================================关于几个事件的先后顺序===============================================
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- Log.e("FirstToLast", "onCreate");
- //可省略!
- //setContentView(R.layout.activity_my);
- //progressBar.setMax(100); 报错,空指针异常
- //因为在onCreate()被调用的时候,@ViewById还没有被set,也就是都为null
- //所以如果你要对组件进行一定的初始化,那么你要用@AfterViews注解
- }
- @AfterViews
- public void init(){
- Log.e("FirstToLast","init");
- progressBar.setMax(10);
- }
- @Override
- protected void onResume() {
- super.onResume();
- Log.e("FirstToLast","onResume");
- }
- @Override
- protected void onStart() {
- super.onStart();
- Log.e("FirstToLast","onStart");
- }
- }
Androidannotations框架的更多相关文章
- AndroidAnnotations框架简单使用方法
当我们配置好了框架后,那么久可以来使用了.使用教程网上一大堆,官方也有提供!!!可自行学习深造.下面我简单的贴出几个常用的方法,作为HelloWorld入门: @EActivity(R.layout. ...
- AndroidAnnotations框架配置
如今Android Studio的普及,Android开发基本要舍弃Eclipse了,最近使用AndroidAnnotations 注解框架的时候,找了些资料慢慢整出来了,在这给大家简单分享一下: 首 ...
- Android Studio 配置 androidAnnotations框架详细步骤
第一步:打开app的build.gradle文件 第二步:添加下面红色的部分 apply plugin: 'com.android.application' android { compileSdkV ...
- AndroidAnnotations(Code Diet)android快速开发框架
最近用了一款很不错的android快速开发框架,1000行的代码瞬间变成几百行,不用你会后悔的 特点: (1) 依赖注入:包括view,extras,系统服务,资源等等(2) 简单的线程模型,通过an ...
- android studio配置AndroidAnnotations
现在很多人都使用Android studio开发工具代替eclipse了,当然的 在eclipse使用的好的一些开发框架也会对应的在android studio上面使用. 参考文档:http://bl ...
- Android 最火高速开发框架AndroidAnnotations使用具体解释
Android 最火的高速开发框架androidannotations配置具体解释文章中有eclipse配置步骤,Android 最火高速开发框架AndroidAnnotations简介文章中的简介, ...
- Android注解框架实战-ButterKnife
文章大纲 Android注解框架介绍 ButterKnife实战 项目源码下载 一.框架介绍 为什么要用注解框架? 在Android开发过程中,我们经常性地需要操作组件,操作方法有findVie ...
- Android 注解框架对比
Java的注解(Annotation)相当于一种标记,在程序中加入注解就等于为程序打上某种标记,标记可以加在包,类,属性,方法,本地变量上.然后你可以写一个注解处理器去解析处理这些注解(人称编译时注解 ...
- Android 最火的高速开发框架AndroidAnnotations使用具体解释
Android 最火的高速开发框架androidannotations配置具体解释文章中有eclipse配置步骤.Android 最火高速开发框架AndroidAnnotations简介文章中的简介. ...
随机推荐
- Linux下文件的三种时间戳
Linux下文件的三种时间标记 三种时间对应关系表 column column column 访问时间 Access atime 修改时间 Modify mtime 状态改动时间 Change cti ...
- 2014ACM/ICPC亚洲区北京站
1001 A Curious Matt 求一段时间内的速度单位时间变化量,其实就是直接求出单位时间内的,如果某段时间能达到最大那么这段时间内必定有一个或一小段单位时间内速度变化是最大的即局部能达到最 ...
- AngularJS 路由
AngularJS 路由允许我们通过不同的 URL 访问不同的内容. 通过 AngularJS 可以实现多视图的单页Web应用(single page web application,SPA). 通常 ...
- Java 8 新特性之泛型的类型推导
1. 泛型究竟是什么? 在讨论类型推导(type inference)之前,必须回顾一下什么是泛型(Generic).泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据 ...
- Blender 之修改器代码分析
Blender的修改器(modifier)模块,默认界面右下块(Property)面板的扳手,分类(修改.生成.形变.模拟)列出所有的修改器.也可以空格键 ...
- 10201启动时候报ORA-27125
[ora10g@oracle ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Thu Feb 26 18:46 ...
- spfa模板
通过stl的queue实现的spfa(vector实现邻接表存图) 本模板没有考虑存在两点不连通的情况 如果需要判断则需要用到并查集或者遍历整个邻接表 #include<iostream> ...
- Mysql数据库的使用总结之Innodb简介
最近在对开发的软件的服务器部分制作安装包,但服务器部分需要有mysql数据库的支持.因此,采用免安装版的mysql策略:将mysql数据库需要的文件在安装程序中进行设置和打包即可.但也遇到了很多问题 ...
- redmine整合GIT版本库
redmine整合GIT版本库 服务器的环境: Ubuntu 11.10 64位 Redmine 1.4.5.stable.10943 git version 1.7.5.4 + gitolite ...
- JAVA 虚拟机钩子
Shutdown Hook Java程序经常也会遇到进程挂掉的情况,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码.JAVA中的ShutdownHook提供了比较好的 ...