編輯:關於Android編程
在當下的java的使用中,annotations已經被廣泛運用,來提升開發效率。在android中,主要是幫助開發者處理一些前後台任務、rest 服務、應用類、代碼片段等,讓開發者專注於真正重要的東西。
(一)如何使用android annotations
具體使用方法請參看此文。
(二)使用范例
/**
* android annotations范例
*
* @author peter_wang
* @create-time 2014-9-13 下午7:40:56
*/
// 設置Activity的layout布局文件
@EActivity(R.layout.activity_http_request)
public class HttpRequestActivity
extends Activity {
// 等同findviewById,名字默認是id名字
@ViewById
TextView tv_response_main;
//string資源文件信息
@StringRes(R.string.hello_world)
String mHelloWorld;
// 執行完oncreate後的動作
@AfterViews
void init() {
tv_response_main.setText(mHelloWorld);
}
// 點擊事件,tv_response_main代表點擊的觸發View對象id
@Click
void tv_response_mainClicked() {
getHttpData();
}
// 後台執行線程
@Background
void getHttpData() {
try {
// 得到HttpClient對象
HttpClient getClient = new DefaultHttpClient();
// 得到HttpGet對象
HttpGet request = new HttpGet("http://192.168.140.1:8080/SimpleServer/servlet/PayServlet?id=1");
// 客戶端使用GET方式執行請教,獲得服務器端的回應response
HttpResponse response = getClient.execute(request);
// 判斷請求是否成功
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 獲得輸入流
InputStreamReader inStrem = new InputStreamReader(response.getEntity().getContent());
BufferedReader br = new BufferedReader(inStrem);
StringBuilder sb = new StringBuilder();
String readLine = null;
while ((readLine = br.readLine()) != null) {
sb.append(readLine);
}
setHttpDataUI(sb.toString());
// 關閉輸入流
inStrem.close();
}
else {
}
}
catch (Exception e) {
e.printStackTrace();
}
}
// 線程中更新UI
@UiThread
void setHttpDataUI(String data) {
tv_response_main.setText(data);
}
}
(三)工作原理
android annotations源於java annotations,簡單了解java annotations可以看這篇文章。
java annotations中包含三種類型:SourceCode、Class、Runtime。
android annotations是SourceCode類型,利用Java Annotation Processing Tool (APT) 在編譯源文件(*.java)之前,通過注解處理器(AnnotationProcessor)解釋並處理源文件中的注解,生成 一些新的源文件,APT也會對新生成源文件進行編譯,直到沒有新的文件生成。新生成的源文件在apt_generated文件夾中。
編譯前
package com.some.company;
@EActivity
public class MyActivity extends Activity {
// ...
}package com.some.company;
public final class MyActivity_ extends MyActivity {
// ...
}由此可知:Activity會生成新的Activity_文件,所以AndroidManifest.xml中用到的Activity和Application都要加下劃線:xxActivity_,xxApplication_。
(四)優點
(1)簡化開發,提高效率。依賴注入layout、views、resource、service等常用操作。
(2)開放。生成的源文件可見。
(3)不影響性能。因為不是runtime操作,都在編譯期生成新的源文件,對程序運行速度沒有影響。
實現bilibili彈幕功能。
在bilibili推出彈幕功能,我也愛上了邊看視頻邊看吐槽了,現在讓我們也來實現這一個功能吧。首先我們要整理一下思緒我們大概需要實現哪個細節板塊呢。我們最直觀的看來,彈幕
OpenCV學習筆記(六)—— Android打開相機
在之前的篇章中,我們完成了Android平台開發環境的配置,也找到了剔除OpenCV Manager API的辦法,那麼接下來我們開始從零開始,完成一個個人的程序,實現功
AndroidAnnnotations注入框架使用之第三方框架集成RoboGuice(十三)
(一).前言:前面我們已經對於AndroidAnnotations框架的線程處理做了講解,今天我們開始具體學習一下第三方框架集成。 (二
android Fragment入門
Fragment是android3.0引入的,為什麼google推出Fragment呢?主要目的是用在大屏幕設備上--例如平板電腦上,支持更加動態和靈活的UI設計。平板電