編輯:關於Android編程
使代碼更加精簡,使項目更加容易維護,它的目標就是“Fast Android Development.Easy maintainance”。
通過一段時間的使用發現,相比原生的Android開發,確實能夠讓你少些很多代碼,它的首頁也給出了一個簡單
的例子,通過例子也可以看到代碼比之前幾乎少寫了一半。由於是開源,所以大家都可以直接拿來使用,這裡給
出AndroidAnnotations首頁 和github上的項目地址AndroidAnnotations Github。
至於使用這個開源框架有什麼好處(只有不到50k大小),我這裡就不詳細翻譯github上的介紹了,就簡單說
一下特性:
1、使用依賴注入(Dependency Injection)#本博接來下幾篇的文章將要介紹的開源組件都使用DI, 不熟悉
的可以了解一下Inversion of Control(IoC)
2、簡化的線程模型(Simplified threading model)
3、事件綁定(Event binding)
4、REST Client
5、No Magic [不知道為什麼這樣稱呼,直譯過來就是:無魔法,它的意思是:AndroidAnnotations在編譯
的時候會產生一個子類(接下來你會明白),你查看這個子類,可以看到它是如何工作的]
環境的配置這裡就不講了,github上已經有比較詳細的介紹,這也不是本文的重點,本文重點在簡單介紹一下
AndroidAnnotations的簡單使用及和其他類似框架(BufferKnife)的不同。
我們先來看一看使用AndroidAnnotations時是如何創建Activity的:
import android.app.Activity;
import android.widget.EditText;
import android.widget.TextView;
import com.googlecode.androidannotations.annotations.Click;
import com.googlecode.androidannotations.annotations.EActivity;
import com.googlecode.androidannotations.annotations.ViewById;
@EActivity(R.layout.main)
public class MyActivity extends Activity {
@ViewById(R.id.myInput)
EditText myInput;
@ViewById(R.id.myTextView)
TextView textView;
@Click
void myButton() {
String name = myInput.getText().toString();
textView.setText("Hello "+name);
}
}了其他很多annotation,這裡我就結合這段代碼介紹一下這個三個。首先@EActivity後必須要有一個layout id 來表示這
個Activity所使用的布局,遠來的onCreate方法就不用了,很明顯這樣可以讓我們少寫一些代碼;@ViewById 就和原來
的findViewById()方法一樣,值得注意的是:@ViewById後的id是可以不寫的,條件是控件變量名稱要與xml中定義的id
必須一致,也就是說 當我在xml文件中定義的TextView的id必須是:android:id="@+id/textView" . 這樣我們在@ViewById
後就不用再寫括號了,直接寫
@ViewById TextView textView;
直接使用,而是要在@AfterView注釋的方法中使用
@AfterView
void init(){
textView.setText("Hello");
}多個Button,可以寫多個@Click,也可以在這樣
@Click({R.id.button1,R.id.button2,R.id.button3})
void buttonClicked(Button bt){
switch(bt.getId()){
case R.id.button1: //
break;
...
}
}以到github自行學習,如有問題、疑問歡迎交流,共同學習。
至於xml文件,還是和之前一樣,沒有變化。
最最最要注意的一點就是:使用AndroidAnnotations千萬要記得,編譯的時候會生成一個子類,這個子類的名稱就是在
原來的類之後加了一個下劃線“_”,比如這個例子產生的子類名稱為“MyActivity_”,這就需要你在注冊這個Activity的時候,在
AndroidManifest.xml中將 MyActivity 改為 MyActivity_ ,使用的時候也是使用MyActivity_來表示此類,如從另一個Activity跳轉
到此節目就要這樣用:
startActivity(new Intent(this,MyActivity_.class));
AndroidAnnotations就介紹到這裡,下面再稍微介紹一下github上的一個大牛Jake Wharton(本博接下來會介紹其一些開源組件)
的類似開源框架:Butter Knife
Butter Knife也是使用注入視圖的方式使開發人員盡可能少的編寫代碼。相比AndroidAnnotations,個人覺得沒有AndroidAnnotations
使用簡單,而且文檔幾乎也沒有。還是先看一小段代碼吧:
package com.example.butterknife;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import butterknife.InjectView;
import butterknife.OnClick;
import butterknife.ButterKnife;
import butterknife.OnItemClick;
import butterknife.OnLongClick;
import static android.widget.Toast.LENGTH_SHORT;
public class SimpleActivity extends Activity {
@InjectView(R.id.title) TextView title;
@InjectView(R.id.subtitle) TextView subtitle;
@InjectView(R.id.hello) Button hello;
@InjectView(R.id.list_of_things) ListView listOfThings;
@InjectView(R.id.footer) TextView footer;
private SimpleAdapter adapter;
@OnClick(R.id.hello) void sayHello() {
Toast.makeText(this, "Hello, views!", LENGTH_SHORT).show();
}
@OnLongClick(R.id.hello) boolean sayGetOffMe() {
Toast.makeText(this, "Let go of me!", LENGTH_SHORT).show();
return true;
}
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
ButterKnife.inject(this);
// Contrived code to use the "injected" views.
title.setText("Butter Knife");
subtitle.setText("View \"injection\" for Android.");
footer.setText("by Jake Wharton");
hello.setText("Say Hello");
}
}
有個代碼生成的插件呢,不過是針對Android Studio的,請看圖:

(gif 的圖為什麼不會動啊)
Generate -> Generate ButterKnife Injections點擊 Confirm , 代碼自動生成!插件項目主頁:
https://github.com/inmite/android-butterknife-zelezny
下載插件:
http://plugins.jetbrains.com/plugin/7369
本文原創,轉載請注明出處-CSDN:菜鳥的成長史
策略模式在android中使用
策略模式(Strategy)策略模式是對象的行為模式。它的用意是針對一組算法,將每一個算法封裝到具有共同接口的獨立類中,從而使得它們可以相互替換。策略模式使得算法可以在不
Android中庫項目的使用方法圖文介紹
在軟件開發過程中,程序代碼的復用,是非常重要的概念。我們總是需要使用一些現有的模塊、包、框架,或開發自己的模塊、包、框架,來實現對程序代碼的復用。比如在JavaWeb編程
Android自定義view實現圓形與半圓形菜單
前不久看到鴻洋大大的圓形菜單,就想開始模仿,因為實在是太酷了,然後自己根據別人(zw哥)給我講的一些思路、一些分析,就開始改造自己的圓形菜單了。文章結構:1.功能介紹以及
從BaseActivity與BaseFragment的封裝談起
這篇博客主要是從BaseActivity與BaseFragment的封裝開始,總結自己在實戰開發中關於Fragment的注意事項以及心得體會。先看以下效果圖:這裡模擬的是