Android UI 及 IO 工具庫:AndroidUIO

jopen 10年前發布 | 14K 次閱讀 Android開發 移動開發 AndroidUIO

Android UI 及 IO 工具庫(基礎框架)

Android APP framework 是一個拖沓冗余的體系,正是因為他的不足,才需要我們去完善他。

通用回調機制

---- 有物混成,先天地生

函數,是編程中最常見的處理單元,加上泛型信息,我們可以讓函數的表達能力更強。

Java的函數雖然用起來不如一些函數式語言那樣簡潔,但是,包裝在接口下面的函數,還可以更加方便的攜帶更豐富的信息。

在這套類庫中,一個簡單通用的可以攜帶泛型信息的回調接口, 將貫穿整個系統。

設計理念

---- 有之以為利,無之以為用。

設計一個具有良好擴展性的基礎框架, 最重要的一點是掌握 “有”和“無”的平衡。

  • 有: 我需要提供那些模塊?那些功能?什么結構?

  • 無: 我在我的系統中提供那些自定義的坑,可以讓你自己去完善,去擴展。

我在這套類庫中, 通過一個通用回調接口, 用來描述“無”的存在,絕大部分功能都以“無” 為中心來設計。

自動化處理

---- 太上,不知有之。

上善若水,我認為最好的工具,就是,當他幫你做了實實在在的事情,而你不需要關心他的存在。

在這個UI&IO框架中,大多數情況下都尊崇這個設計思想。

如:

  • 當你適用網絡圖片的時候,不用關心圖片緩存的操作;

  • 當你編寫網絡任務時,Activity暫停/恢復/終止時,您無需再為相關的任務調度優化操心;

  • 沒有網絡的時候,不需要關心離線展示的支持;等等...

網絡請求

  • 任務管理

    • 自動根據生命周期調度(終止/暫停/繼續)任務。

    • 隨時手動終止任務。

  • 網絡緩存優化

    • 自動緩存

    • 自動離線支持

  • 雙回調機制

    • 快速內容展示

    • 網絡數據檢查并按需更新

圖片處理

  • 簡單bind接口

  • 自動計數和內存管理

  • 自動支持動畫gif

  • 自定義圖像預處理接口

    比如,如果你想畫個圓角陰影什么的

自動模型轉換

數據結構和java對象是一一對應的,  但是我們很多老實的程序員天天樂此不疲的手動解析json,手動吧這些json一個個復制到java對象模型中, 這些實在是沒有必要。

存儲模型

  • 健值對存儲DSL

    • 健值存儲接口的屬性,可以自動實現讀寫抄作, 系統通過動態代理自動將其實現。

  • 關系數據庫映射DSL

    • 定義一個java類,加上簡單的注解,即可描述一個簡單的數據存儲格式,根據這個類就可以自動創建出一個SQLiteMapping, 自動實現一個簡單的關系數據映射DAO。

狀態管理

  • Activity 狀態

  • ##其他

  • 網絡檢測。

  • Toast,Application等等

Http Request && Cache && schedule automatic


    //the http request will be canceled after activity finished
    //and auto paused after the activity is paused when the task is pauseable.
    //and auto resume after the activity is resume again.
    Cancelable task = UIO.get(new Callback<MyClass>(){
        //http stream will be auto parsed and mapping to you standard javabean object.
         public void callback(MyClass javabean){
             //TODO:...
         }
         public void error(Throwable ex, boolean callbackError){
             //TODO:....
         }
    },url);
    // and you can cancel it any time by yourself
    // task.cancel();

    // double callback (cache first show and update on need)
    Cancelable task = UIO.get(new CacheCallback<MyClass>(){
         public void callback(MyClass javabean){
            //TODO: on cache parsed!
         }
         public void update(MyClass javabean){
            //TODO: on new network result(null for not modified data)
         }
         public void error(Throwable ex, boolean callbackError){
            //TODO:....
         }
    },url);

    // post file
    Cancelable task = UIO.post(new Callback<MyClass>(){
         public void callback(MyClass javabean){
            //TODO: upload success!
         }
         public void error(Throwable ex, boolean callbackError){
            //TODO:....
         }
    }, url, fileName, file);

Image Bind

//the image url will auto load and parse and set as the drawable for the imageView 
//if the image url is a animated gif,then it is show as a movie!
UIO.bind(imageView,imageUrl);

//you can set the drawableFactory for the image loading(getLoadingDrawable) and process(such as radious, shawdown....)
//and set the fallback drawable for the action
UIO.bind(imageView,imageUrl,drawableFactory,fallbackResourceId);


//you can set the callback for the bind action(callback on image load(or cached) and bind to image view)
UIO.bind(imageView, imageUrl,drawableFactory,fallbackResourceId,  callback);//Callback<Drawable>

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

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