編輯:關於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推出彈幕功能,我也愛上了邊看視頻邊看吐槽了,現在讓我們也來實現這一個功能吧。首先我們要整理一下思緒我們大概需要實現哪個細節板塊呢。我們最直觀的看來,彈幕
在之前的篇章中,我們完成了Android平台開發環境的配置,也找到了剔除OpenCV Manager API的辦法,那麼接下來我們開始從零開始,完成一個個人的程序,實現功
(一).前言:前面我們已經對於AndroidAnnotations框架的線程處理做了講解,今天我們開始具體學習一下第三方框架集成。 (二
Fragment是android3.0引入的,為什麼google推出Fragment呢?主要目的是用在大屏幕設備上--例如平板電腦上,支持更加動態和靈活的UI設計。平板電