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简介文章中的简介. ...
随机推荐
- seo优化urlrewrite伪静态技术
1.下载urlrewrite-3.2.0.jar 2.在WEB-INF下增加urlrewrite.xml <?xml version="1.0" encoding=" ...
- css清除浮动大全共8种方法
原文链接http://www.jb51.net/css/173023.html 清除浮动是每一个 web前台设计师必须掌握的机能.css清除浮动大全,共8种方法. 浮动会使当前标签产生向上浮的效果,同 ...
- React学习笔记-8-属性和状态详解
属性的含义和用法props=properties 英文中属性的意思.属性不可以修改,也就是属性不可以由组件进行修改,组件的属性是由父组件传递过来的,相当于组件在出生的时候带的.用法第一种:直接在调用组 ...
- git bash操作
1. GIT说明 1> git是分布式,或者说是去中心化的.表现为: 开发者的可以在本地使用git并完美的控制自己的版本,而无需与服务端交互: 开发者可以将本地库在某个服务端备份,这种情况类似S ...
- hdu 5901 count prime & code vs 3223 素数密度
hdu5901题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5901 code vs 3223题目链接:http://codevs.cn/problem ...
- JS的双等和三等的区别
在JS会碰到一个奇怪的运算符"===",之前学JAVA和C语言,只有"==",JS冒出个"===",挺奇怪的,遂google之... 在JS ...
- JS实现常用排序算法—经典的轮子值得再造
关于排序算法的博客何止千千万了,也不多一个轮子,那我就斗胆粗制滥造个轮子吧!下面的排序算法未作说明默认是从小到大排序. 1.快速排序2.归并排序3.冒泡排序4.选择排序(简单选择排序)5.插入排序(直 ...
- 【Hibernate框架】三种继承映射
一.综述 大家都知道,hibernate作为ORM框架的一个具体实现,最大的一个优点就是是我们的开发更加的能体现出"面向对象"的思想.在面向对象开发中,类与类之间是可以相互继承的( ...
- 用SqlBulkCopy批量安插数据时提示来自数据源的 String 类型的给定值不能转换为指定目标列的类型 int
dr["description"] = ds.Tables[0].Rows[i]["组织描述"].ToString(); dr[& ...
- (转)java自带线程池和队列详细讲解 - CSDN过天的专栏
一简介 线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的.在jdk1.5之后这一情况有了很大的改观.Jdk1.5之后加入了java.util ...