Android 最火快速开发框架androidannotation简介

在上一篇Android
最火的快速开发框架androidannotations配置详解
中介绍了在eclipse中配置androidannotation的步骤,如需配置请参考。

1.目标

androidannotation框架要促进Android应用程序的编写和维护。相信简单的代码有明确的意图是实现这些目标的最佳途径。

当我们都沉浸在开发Android应用程序时,我们常常会想:为什么我们总是需要反复写相同的代码吗?为什么我们的应用越来越难维护呢?

context和activity就像是神一样的东西,我们被复杂的线程玩耍,难以参考的API,加载很多的无名监听类,写大量不需要的异常抛出..我们不能改善它们吗?

2.怎么改善

利用Java 注解机制,开发者能展示他们的意图,还能让androidannotation框架在编译时继承管道代码。

3.特色

*依赖注入:注入view、extras数据、service、resource..

*简单的线程模型:在方法名上注释是在UI线程运行还是后台线程运行

*事件绑定:注释你的方法处理view的事件,不再有难看的匿名监听类。

*REST客户端:创建了一个客户端接口,androidannotation继承了springAndroid的接口。

*不是深不可测:因为AndroidAnnotations继承子类在编译时,你可以检查代码看看它是怎么工作的。

*AndroidAnnotation提供了这么多的好东西甚至它是小于50kb,在运行时没有任何性能影响。

4.使用androidannotation的一些应用

5.对比

Before


  1. public class BookmarksToClipboardActivity extends Activity {
  2. BookmarkAdapter adapter;
  3. ListView bookmarkList;
  4. EditText search;
  5. BookmarkApplication application;
  6. Animation fadeIn;
  7. ClipboardManager clipboardManager;
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. requestWindowFeature(Window.FEATURE_NO_TITLE);
  12. getWindow().setFlags(FLAG_FULLSCREEN, FLAG_FULLSCREEN);
  13. setContentView(R.layout.bookmarks);
  14. bookmarkList = (ListView) findViewById(R.id.bookmarkList);
  15. search = (EditText) findViewById(R.id.search);
  16. application = (BookmarkApplication) getApplication();
  17. fadeIn = AnimationUtils.loadAnimation(this, anim.fade_in);
  18. clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
  19. View updateBookmarksButton1 = findViewById(R.id.updateBookmarksButton1);
  20. updateBookmarksButton1.setOnClickListener(new OnClickListener() {
  21. @Override
  22. public void onClick(View v) {
  23. updateBookmarksClicked();
  24. }
  25. });
  26. View updateBookmarksButton2 = findViewById(R.id.updateBookmarksButton2);
  27. updateBookmarksButton2.setOnClickListener(new OnClickListener() {
  28. @Override
  29. public void onClick(View v) {
  30. updateBookmarksClicked();
  31. }
  32. });
  33. bookmarkList.setOnItemClickListener(new OnItemClickListener() {
  34. @Override
  35. public void onItemClick(AdapterView<?> p, View v, int pos, long id) {
  36. Bookmark selectedBookmark = (Bookmark) p.getAdapter().getItem(pos);
  37. bookmarkListItemClicked(selectedBookmark);
  38. }
  39. });
  40. initBookmarkList();
  41. }
  42. void initBookmarkList() {
  43. adapter = new BookmarkAdapter(this);
  44. bookmarkList.setAdapter(adapter);
  45. }
  46. void updateBookmarksClicked() {
  47. UpdateBookmarksTask task = new UpdateBookmarksTask();
  48. task.execute(search.getText().toString(), application.getUserId());
  49. }
  50. private static final String BOOKMARK_URL = //
  51. "http://www.bookmarks.com/bookmarks/{userId}?search={search}";
  52. class UpdateBookmarksTask extends AsyncTask<String, Void, Bookmarks> {
  53. @Override
  54. protected Bookmarks doInBackground(String... params) {
  55. String searchString = params[0];
  56. String userId = params[1];
  57. RestTemplate client = new RestTemplate();
  58. HashMap<String, Object> args = new HashMap<String, Object>();
  59. args.put("search", searchString);
  60. args.put("userId", userId);
  61. HttpHeaders httpHeaders = new HttpHeaders();
  62. HttpEntity<Bookmarks> request = new HttpEntity<Bookmarks>(httpHeaders);
  63. ResponseEntity<Bookmarks> response = client.exchange( //
  64. BOOKMARK_URL, HttpMethod.GET, request, Bookmarks.class, args);
  65. Bookmarks bookmarks = response.getBody();
  66. return bookmarks;
  67. }
  68. @Override
  69. protected void onPostExecute(Bookmarks result) {
  70. adapter.updateBookmarks(result);
  71. bookmarkList.startAnimation(fadeIn);
  72. }
  73. }
  74. void bookmarkListItemClicked(Bookmark selectedBookmark) {
  75. clipboardManager.setText(selectedBookmark.getUrl());
  76. }
  77. }

After


  1. @NoTitle
  2. @Fullscreen
  3. @EActivity(R.layout.bookmarks)
  4. public class BookmarksToClipboardActivity extends Activity {
  5. BookmarkAdapter adapter;
  6. @ViewById
  7. ListView bookmarkList;
  8. @ViewById
  9. EditText search;
  10. @App
  11. BookmarkApplication application;
  12. @RestService
  13. BookmarkClient restClient;
  14. @AnimationRes
  15. Animation fadeIn;
  16. @SystemService
  17. ClipboardManager clipboardManager;
  18. @AfterViews
  19. void initBookmarkList() {
  20. adapter = new BookmarkAdapter(this);
  21. bookmarkList.setAdapter(adapter);
  22. }
  23. @Click({R.id.updateBookmarksButton1, R.id.updateBookmarksButton2})
  24. void updateBookmarksClicked() {
  25. searchAsync(search.getText().toString(), application.getUserId());
  26. }
  27. @Background
  28. void searchAsync(String searchString, String userId) {
  29. Bookmarks bookmarks = restClient.getBookmarks(searchString, userId);
  30. updateBookmarks(bookmarks);
  31. }
  32. @UiThread
  33. void updateBookmarks(Bookmarks bookmarks) {
  34. adapter.updateBookmarks(bookmarks);
  35. bookmarkList.startAnimation(fadeIn);
  36. }
  37. @ItemClick
  38. void bookmarkListItemClicked(Bookmark selectedBookmark) {
  39. clipboardManager.setText(selectedBookmark.getUrl());
  40. }
  41. }
  1. @Rest("http://www.bookmarks.com")
  2. public interface BookmarkClient {
  3. @Get("/bookmarks/{userId}?search={search}")
  4. Bookmarks getBookmarks(String search, String userId);
  5. }

需要注意的是androidannotation在编译时会生成一个子类,子类的名字是在原有的名字后面加"_",而且在AndroidManifest.xml中注册加"_"的类,例如:

<activity android:name=".MyListActivity_" />

跳转activity时也有所不同:

startActivity(this, MyListActivity_.class);

从2.4版本后提供了一个简便方法:

MyListActivity_.intent(context).start();

2.7版本之后可以使用:

MyListActivity_.intent(context).startForResult();

开启service类似:

MyService_.intent(context).start();

更多的注解使用方法请参考官方文档。

https://github.com/excilys/androidannotations/wiki/Cookbook

如有问题请留言,转载注明出处。

Android 最火快速开发框架androidannotation简介

时间: 2024-10-05 23:43:49

Android 最火快速开发框架androidannotation简介的相关文章

Android 最火快速开发框架AndroidAnnotations简介

1.目标   androidannotation框架要促进Android应用程序的编写和维护.相信简单的代码有明确的意图是实现这些目标的最佳途径. 当我们都沉浸在开发Android应用程序时,我们常常会想:为什么我们总是需要反复写相同的代码吗?为什么我们的应用越来越难维护呢? context和activity就像是神一样的东西,我们被复杂的线程玩耍,难以参考的API,加载很多的无名监听类,写大量不需要的异常抛出..我们不能改善它们吗? 2.怎么改善   利用Java 注解机制,开发者能展示他们的

Android 最火高速开发框架AndroidAnnotations简单介绍

在上一篇Android 最火的高速开发框架androidannotations配置具体解释中介绍了在eclipse中配置androidannotation的步骤,如需配置请參考. 1.目标 androidannotation框架要促进Android应用程序的编写和维护.相信简单的代码有明白的意图是实现这些目标的最佳途径. 当我们都沉浸在开发Android应用程序时,我们经常会想:为什么我们总是须要重复写同样的代码吗?为什么我们的应用越来越难维护呢? context和activity就像是神一样的

Android框架之快速开发框架xUtil

做Android开发我们一般是从原生态的开始,就是调用默认那些Android代码来开发我们的应用,但是到了一定程度,我们就想着怎么来快速开发我们的应用,这个时候我们就要着手来研究框架了.下面介绍一个很流行的框架xUtil: xUtils简介 xUtils 包含了很多实用的android工具. xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls

9款Android常用的快速开发框架

1.Afinal框架 项目地址:https://github.com/yangfuhai/afinal 项目地址:http://www.oschina.net/p/afinal 主要有四大模块: (1) 数据库模块:android中的orm框架,使用了线程池对sqlite进行操作. (2) 注解模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定.无需findViewById和setClickListener等. (3) 网络模块:通过httpclient进行封装http

Android常用的快速开发框架

一.Afinal框架 项目地址:https://github.com/yangfuhai/afinal 主要有四大模块: (1) 数据库模块:Android中的orm框架,使用了线程池对sqlite进行操作. (2) 注解模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定.无需findViewById和setClickListener等. (3) 网络模块:通过httpclient进行封装http数据请求,支持ajax方式加载,支持下载.上传文件功能. (4) 图片缓存

Android 最火的快速开发框架AndroidAnnotations使用详解

Android 最火的快速开发框架androidannotations配置详解文章中有eclipse配置步骤,Android 最火快速开发框架AndroidAnnotations简介文章中的简单介绍,本篇注重讲解AndroidAnnotations中注解方法的使用. @EActivity 示例: @EActivity(R.layout.main) public class MyActivity extends Activity { } @fragment 示例: @EFragment(R.lay

Android 最火的高速开发框架AndroidAnnotations使用具体解释

Android 最火的高速开发框架androidannotations配置具体解释文章中有eclipse配置步骤.Android 最火高速开发框架AndroidAnnotations简介文章中的简介.本篇注重解说AndroidAnnotations中注解方法的使用. @EActivity 演示样例: @EActivity(R.layout.main) public class MyActivity extends Activity { } @fragment 演示样例: @EFragment(R

Android 最火的快速开发框架xUtils

Github下载地址:https://github.com/wyouflf/xUtils xUtils简介 xUtils 包含了很多实用的Android工具. xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响. xUtils最低兼容Android 2.2 (API Level 8) 目前xUtils工具主要有四大模块: DbUtils模块 Android中的O

Android 最火的快速开发框架androidannotations配置详解

以前给大家介绍的xUtils是国内比较火的快速开发框架,但是它的注解机制不是太稳定而且注解可选也比较少,今天给大家介绍一个国外的一个框架主要专注于注解的开发,简化Android代码编写,因为配置注意事项较为复杂,所以先详细介绍一下配置: git官网:https://github.com/excilys/androidannotations 下载完解压目录如上,AndroidAnnotations是源码工程,example是例子工程, 打开\examples\HelloWorldEclipse,如