Android开发框架androidannotations使用初步

  • 一.简介
    我们在开发J2EE项目的时候,经常感觉Spring很方便,因此,当我们开发android的时候,自然而然会想有没有类似的框架。本次博客主要讲一下比较流行的android开发框架AndroidAnnotations,它除了有依赖注入的特性以外,还集成了Ormlite,Spring-android中的REST模板。使用起来非常方便,大大提高了开发效率。
    二.使用步骤
    1.下载AndroidAnnotations:
    $ git clone https://github.com/excilys/androidannotations.git
    项目中重要的两个jar包分别是:androidannotations-api-3.0.1.jar和androidannotations-3.0.1.jar
    2.新建一个android项目,然后将androidannotations-api-3.0.1.jar复制到libs目录下,在项目的根目录新建一个文件夹,命名为compile-libs,然后将androidannotations-3.0.1.jar复制到该目录下

    3.然后设置项目属性:右键->Properties->Java Compiler->Annotation Processing 在该页面选中Enable project specific settings。

    \

    然后点击Annotation Processing的子项Factory Path页面,选中Enable project specific settings,然后添加编译所需的jar包。点击“Add JARs”将之前complie-libs目录下的androidannotations-3.0.1.jar导入,保存后退出。

    \

    4.下面我们就看一下如下代码

    首先是布局文件

     

    01. <?xml version="1.0" encoding="utf-8"?>
    02. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    03. android:orientation="vertical"
    04. android:layout_width="fill_parent"
    05. android:layout_height="fill_parent"
    06. >
    07. <EditText 
    08. android:id="@+id/myInput"
    09. android:layout_width="fill_parent"
    10. android:layout_height="wrap_content"
    11. />
    12. <Button 
    13. android:id="@+id/myButton"
    14. android:layout_width="fill_parent"
    15. android:layout_height="wrap_content"
    16. android:text="Click me!"
    17. />
    18. <TextView 
    19. android:id="@+id/myTextView"
    20. android:layout_width="fill_parent"
    21. android:layout_height="wrap_content"
    22. />   
    23. </LinearLayout>

    上述布局文件和普通项目的布局文件没有什么差别,下面我们看一下对应的Activity的java文件

     

     

    01. package com.example.testaa;
    02.  
    03. import org.androidannotations.annotations.AfterViews;
    04. import org.androidannotations.annotations.Click;
    05. import org.androidannotations.annotations.EActivity;
    06. import org.androidannotations.annotations.UiThread;
    07. import org.androidannotations.annotations.ViewById;
    08.  
    09. import android.app.Activity;
    10. import android.content.Intent;
    11. import android.widget.Button;
    12. import android.widget.EditText;
    13. import android.widget.TextView;
    14. import android.widget.Toast;
    15. @EActivity(R.layout.activity_main)
    16. public class MainActivity extends Activity {
    17. @ViewById(R.id.myInput)
    18. EditText myEditText;
    19.  
    20. @ViewById
    21. Button myButton;
    22.  
    23. @ViewById
    24. TextView myTextView;
    25. /**
    26. * 加载完View之后进行的处理
    27. */
    28. @AfterViews
    29. void afterViewProcess(){
    30. myButton.setText("Next");
    31. myTextView.setText("第一个Activity页面");
    32. }
    33.  
    34. /**
    35. * 绑定点击事件
    36. */
    37. @Click(R.id.myButton)
    38. void processClick(){
    39. Intent intent=new Intent(this,SubActivity_.class);
    40. intent.putExtra("input_value", myEditText.getEditableText().toString());
    41. startActivity(intent);
    42. }
    43.  
    44. /**
    45. * 利用UI线程显示一个Toast
    46. * @param content
    47. */
    48. @UiThread
    49. void showToast(String content){
    50. Toast.makeText(getApplicationContext(), content, Toast.LENGTH_SHORT).show();
    51. }
    52. /**
    53. * 延时显示
    54. * @param content
    55. */
    56. @UiThread(delay=1000)
    57. void showToastDelay(String content){
    58. Toast.makeText(getApplicationContext(), content, Toast.LENGTH_SHORT).show();
    59. }
    60. }

    可以看出,我们通过注解的方式,大大简化了原有的代码。

     

    注解1:@ViewById 与findViewById功能相似,如果ViewById后没有设置资源ID的话,就是自动查找与变量名称相同的id资源。

    注解2:@Click 点击事件处理的注解。

    注解3:@UiThread 后台Ui线程的注解,省去了Handler等等。

    注解4:@EActivity 提示Activity的注解,注意,该注解将Activity编译成Activity_,注意,多一个下划线“_”,因此在AndroidManifest.xml文件中需要将其添加下滑线

    注解5:@AfterViews 是指View类注入完毕之后执行的代码。

     

    我们第二个页面的布局文件与第一个相同,我们主要看一下它的java文件

     

    01. /*
    02. * $filename: SubActivity.java,v $
    03. * $Date: 2014-4-15  $
    04. * Copyright (C) ZhengHaibo, Inc. All rights reserved.
    05. * This software is Made by Zhenghaibo.
    06. */
    07. package com.example.testaa;
    08.  
    09. import org.androidannotations.annotations.AfterViews;
    10. import org.androidannotations.annotations.Click;
    11. import org.androidannotations.annotations.EActivity;
    12. import org.androidannotations.annotations.Extra;
    13. import org.androidannotations.annotations.UiThread;
    14. import org.androidannotations.annotations.ViewById;
    15.  
    16. import android.app.Activity;
    17. import android.widget.Button;
    18. import android.widget.EditText;
    19. import android.widget.TextView;
    20. import android.widget.Toast;
    21.  
    28. @EActivity(R.layout.activity_sub)
    29. public class SubActivity extends Activity{
    30. @ViewById(R.id.myInput)
    31. EditText myEditText;
    32.  
    33. @ViewById
    34. Button myButton;
    35.  
    36. @ViewById
    37. TextView myTextView;
    38.  
    39. @Extra(value="input_value")
    40. String inputString;
    41.  
    42. @AfterViews
    43. void afterViewProcess(){
    44. myTextView.setText(inputString);
    45. }
    46.  
    47. @Click(R.id.myButton)
    48. void processClick(){
    49. showToast("Clicked me !");
    50. }
    51.  
    52. @UiThread
    53. void showToast(String content){
    54. Toast.makeText(getApplicationContext(), content, Toast.LENGTH_SHORT).show();
    55. }
    56. }

    这里面多一个@Extra注解,这个注解的含义和getIntent().getExtra()相同,目的是获取上一个Activity通过Intent传递过来的值。

     

    下面是AndroidManifest.xml文件

     

    01. <?xml version="1.0" encoding="utf-8"?>
    02. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    03. package="com.example.testaa"
    04. android:versionCode="1"
    05. android:versionName="1.0" >
    06.  
    07. <uses-sdk
    08. android:minSdkVersion="8"
    09. android:targetSdkVersion="17" />
    10.  
    11. <application
    12. android:allowBackup="true"
    13. android:icon="@drawable/ic_launcher"
    14. android:label="@string/app_name"
    15. android:theme="@style/AppTheme" >
    16. <activity
    17. android:name="com.example.testaa.MainActivity_"
    18. android:label="@string/app_name" >
    19. <intent-filter>
    20. <action android:name="android.intent.action.MAIN" />
    21.  
    22. <category android:name="android.intent.category.LAUNCHER" />
    23. </intent-filter>
    24. </activity>
    25. <activity
    26. android:name="com.example.testaa.SubActivity_"></activity>
    27. </application>
    28.  
    29. </manifest>

    注意Activity的声明,多添加了下划线“_”

     

    框架的其他注解:https://github.com/excilys/androidannotations/wiki/AvailableAnnotations 

  • 该文章引用别人的博客 :http://www.it165.net/pro/html/201404/12213.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值