Coding Android 客戶端源代碼

jopen 9年前發布 | 18K 次閱讀 Android Android開發 移動開發

編譯環境

Android Studio 1.0.1,用gradle引用的許多第三方庫,第一次加載會有點慢,加載完畢后要build一下(因為用了gradle,所以不支持eclipse)。

包說明

common 基類和工具類

comment 評論區
enter 輸入框
network 對網絡做了一點封裝
photopick 圖片多選控件
umeng 封裝了umeng

hide 進入staging界面
maopao 冒泡界面
message 消息界面
model 一些數據結構
project 我的項目界面
setting 設置界面
task 我的任務界面
third 一些第三方代碼
user 好友界面

一些覺得有必要提一下的

因為不想寫一堆綁定函數,所以項目用了 androidannotations,如果以前沒用過最好先看看。顯示圖片用的universal-image-loader,網絡庫用的android-async-http,因為登錄以后保存的cookie都在android-async-http,有些圖片需要登錄后的cookie才能取到(例如項目文檔里面的圖片),這種情況就會用先用android-async-http下載圖片(AttachmentimagePagerFragment.java)。

  • Application用的是MyApp.java,用靜態變量保存了用戶信息,屏幕長寬等信息(理論上來說不是好的做法,但是這些基本都是只讀的數據,而且并不大,所以就這么做了)。

  • 跳轉:Coding的url是可以通過正則匹配來確定需要跳轉的頁面和參數。比如

      // 項目討論
        // https://coding.net/u/8206503/p/AndroidCoding/topic/9638?page=1
        final String topic = "^https://[\\w.-]*/u/([\\w.-]+)/p/([\\w.-]+)/topic/(\\w+)(?:\\?[\\w=&-]*)?$";
        pattern = Pattern.compile(topic);
        matcher = pattern.matcher(uriString);
        if (matcher.find()) {
            intent.setClass(context, TopicListDetailActivity_.class);
            TopicListDetailActivity.TopicDetailParam param =
                    new TopicListDetailActivity.TopicDetailParam(matcher.group(1),
                            matcher.group(2), matcher.group(3));
            intent.putExtra("mJumpParam", param);
            context.startActivity(intent);
            return;
        }

8206503是創建者的個性后綴,AndroidCoding是項目名稱,topic表示這是一個討論,9638是討論的id號。

  • 圖文混排顯示:服務端給我的是html,圖片的鏈接通過正則表達式提取出來用單獨的ImageView顯示,文字和表情則保留下來,通過 Html.fromHtml() 轉換成 Spannable,用TextView顯示,表情的圖片已經打包到了apk,TextView會直接在資源里面查找出來。

  • 本地緩存:由 AccountInfo 實現,其實就是將數據類以文件的方式保存起來。

  • 表情輸入:在后臺,表情其實是我們自定義的文字,沒有用emoji,比方說笑臉,emoji是0x0001F604,我們的后臺對應的是 :smile: ,用戶用系統鍵盤輸入emoji的時候,我會做一下替換,至于顯示,因為android的TextView和Edit本來就支持顯示Spannable,基本上就是將文字轉成Spannable就可以做到圖文混排了。自定義的表情鍵盤就是用pager做出來的,有一點麻煩的是要保證表情鍵盤和系統鍵盤不能同時出現,我的做法是通過監聽屏幕高度變化來設置鍵盤的顯示和隱藏,在魅族的手機上遇到了問題,估計是因為smartbar的原因,回調函數有時候沒有被調用,我的解決方法是用handle發了一個延時消息,保證回調函數能被調用。

  • 用戶統計用的是umeng,因為以前用過,覺得還好,所以就繼續用了。

  • 推送用的是騰訊的信鴿,之前用的是umeng推送,但有延遲有時候很大,而且用新帳號登錄后還能收到舊帳號的推送,多種原因之下就換了。

用到的一些開源庫說明

見我寫的blog

項目主頁:http://www.baiduhome.net/lib/view/home/1442049121008

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!