導航:首頁 > 圖片大全 > 安卓如何設計圖片載入框架

安卓如何設計圖片載入框架

發布時間:2023-03-21 23:38:20

『壹』 Android之 glide 框架 解讀

glide圖片載入框架 其目的幫助我們在開發過程中對控制項上的圖片載入減壓,它能夠通過參數和方法載入 本地圖片 網路圖片 二進制等到控制項上 還能夠設置預載入以及載入出錯時的錯誤提示圖片,還能夠對載入的圖片進行緩存重復利用 可以緩存原始照片還能緩存經過壓縮處理後談並的照片,能夠緩存到內存,或者硬碟,甚至正侍坦glide可以載入GIF動圖還可以給載入的靜態圖片指定大小,對於 glide的緩存機制它用的是lru 這種緩存機制 其實就是 在一定舉桐緩存空間內把最近用的以及重復用的排列在最高級 將最不常用沒有重復使用的排在最低級 當有新實例出現,緩存空間不夠用的情況下就會把被打有最低級標志的實例釋放掉。

『貳』 想問一下在Android studio裡面怎麼實現顯示網路圖片,就是輸入一個網址,顯示一張圖片

使用第三帶好仔方圖片載入蠢汪襪春框架如picasso,使用很簡單,以下幾步即可完成你的需求。

  1. 在app的build.gradle文件中添加依賴

    implementation 'com.squareup.picasso:picasso:2.71828'

  2. 傳入網路圖片地址,以及要在哪個ImageView上顯示

    Picasso.get().load(imageurl).into(mImageView);

很簡單,通過以上步驟,就可以完成在Android studio裡面怎麼實現顯示網路圖片,就是輸入一個網址,顯示一張圖片。

『叄』 Android圖片載入及虛化效果

[TOC]

使用如下方式載入圖片

會導致OOM,android對於直接通過資源id載入的資源需做cache,下次再需要此資源的時候直接從cache中得到。但這樣做也造成了用過的資源都會在內存中,這樣的設計不是很適合使用了很多大圖片資源的應用,這樣累積下來應用的內存峰值是很高的。

當使用諸如
imageView.setBackgroundResource
imageView.setImageResource
BitmapFactory.decodeResource
這樣的方法來設置一張大圖片時,在完成decode後,最終都是通過java層的createBitmap來完成的,需要消耗更多內存。因此,改用先通過BitmapFactory.decodeStream方法,創建出一個bitmap,再將其設為ImageView的 source,decodeStream最大的秘密在於其直接調用JNI>>nativeDecodeAsset()來完成decode,無需再使用java層的createBitmap,從而節省了java層的空間。如果在讀取時加上圖片的Config參數,可以液飢有效減少載入的內碰孫存,從而有效阻止拋OOM異常。

實際使用中,可以針對bitmap做如下操作

RenderScript是Google在API11中引入的類,可看作業android內置的圖片處理框架(區別於Glide等圖片處理框架,RenderScript注重於圖片的處理而不是載入)。RenderScript實際操作基於RenderScript Intrinsics,一些可以幫助RenderScript快速實現各種圖片處理的操作類。該類包含諸多操作功能,比如利用ScriptIntrinsicBlur,就可以簡單高效地實現高斯模糊效果,可通過參數radius設置虛化的程度。

1920*1080的原始圖片未經壓縮讀取時間可能會超過1s,使用該圖片作為背景圖片載入時會有明顯的卡頓。此時就需要設置BitmapFactory.Options實現對待載入圖片的壓縮。可參照 https://blog.csdn.net/u012124438/article/details/66087785 逐步優化Bitmap載入。對於載入圖片較多較頻繁的功能,建議使用第三方的圖片載入框架,如Glide或者Picasso。

需要注意的是,此處doBlur有兩個重載,可根據需要設置圖片的縮放比例.這種方式和前文通過BitmapFactory.Options設置Bitmap取樣格式的效果是一致的,都笑埋鏈是為了減小Bitmap載入的資源消耗,提高載入效率。

『肆』 Android 實現Gif播放的七種方法

背景:在項目里某個需求實現的時候,有個圖標有一個動畫效果,為了達到UI要求的效果,試過多種方案,在這篇文章中講一下這些方案的用法,以及結合項目的現狀,做的一個方案選擇。

Link: https://github.com/bumptech/glide
Glide是Android上比較常見的圖片載入框架了,在Android上是數一數銷蔽二的圖片載入框架代表了,當然,早期的類似 ImageLoader Picasso 這些,算是比較具有歷史性的圖片載入框架了。

Glide載入Gif的話,用到的是 GifDrawable 這個對象,一般我們用

去創建,唯斗穗當然,如果你載入的是 Bitmap 或 GifDrawable,你可以判斷這個可繪制對象是否實現了 Animatable:

Link: https://github.com/koral--/android-gif-drawable
android-gif-drawable也是Android上比較火熱的圖片載入框架

這個庫播放Gif用到的也是 pl.droidsonroids.gif.GifDrawableGifDrawable 對象,不像Glide,它的創建的方式比較簡單

可以根據需求,選擇不同的構造器創建對象

GifDrawable 實現了 Animatable 跟 MediaPlayerControl 介面,所以你可以使用他們各自的方法甚至更多

使用 MediaPlayerControl
MediaPlayer的標准控制項(如VideoView)可用於控制GIF動畫並顯示其當前進度。
只需在 MediaController 上將 GifDrawable 設置為 MediaPlayer ,如下所示:

更多詳細用法見 Github Usage

Link:android.jar-android.graphics.drawable
AnimatedImageDrawable是Android官方推出播放動圖的類,優點是官方穩定高效,缺點是僅支持Android P版本(api=28)以上

使用方法也比較簡單

Link:android.jar-android.graphics
android.graphics.Movie 也是Android自帶的類,可以用來載入播放Gif動畫,實現起來相對來說可能比較繁瑣,官方已經將這個類標記為 @Deprecated {@link android.graphics.drawable.AnimatedImageDrawable} ,但還是有必要講下。
主要的構造方法有:

按來源分別可以從Gif文件的輸入指卜流,文件路徑,位元組數組中得到Movie的實列。然後我們可以通過操作Movie對象來操作Gif文件。
下面介紹下幾個方法:

關鍵是Movie官方沒有給出回調監聽,故我們需要手動做監聽。
有興趣的可以看這一篇文章,寫的很不錯。 Android自定義View播放Gif動畫

當然,除了這些之外,還有跨平台的解決方案,比起傳統的gif文件, Lottie 則是使用json文件來代表動畫源文件。

Lottie 對APK的影響有多大?

Add the dependency to your project build.gradle file:

核心類:

載入動畫:
Lottie 可以載入動畫來自:

最簡單的形式就是使用 LottieAnimationView :
推薦使用 lottie_rawRes ,相對於使用指定的字元串文件名,你可以使用通過 R 文件以靜態的引用形式指定你的動畫文件.

更多詳細介紹及用法見 官方文檔

Link: https://android.googlesource.com/platform/frameworks/ex/+/android-5.0.2_r1/framesequence
FrameSequenceDrawable 更多的是對webp格式的一個支持,所以當要使用時,需要將你的gif轉為webp

來看下主要的構造方法:

使用方法如下:

[Facebook/Fresco] ( https://github.com/facebook/fresco ) 也支持gif的載入,大同小異,這里就不再過多介紹了。

Glide在部分設備上遇到了Gif變慢的問題,詳見 issues_2471
考慮到項目已經集成了Glide了,就不打算再繼續引入第三方的庫了。又因為原素材的問題,無法導出Lottie格式的json文件。
故這一塊當時做的就是 >=androidP 用AnimatedImageDrawable,<androidP 就用Glide,僅供參考。

『伍』 安卓圖片選擇框架Matisse的使用

本文介紹圖片選擇框架Matisse的使用,實現扮粗此圖片的選擇及使用相機進行拍攝,最後將選擇或拍攝的照片顯示在activity中。
這里僅凳吵做使用介紹,不做深入研究。
主要涉及處理安卓6.0許可權的動態獲取,這里使用rxpermissions
本文目錄
1、github地址
2、項目結構
3、使用效果
4、使用准備
1)項目依賴
2)AndroidManifest.xml文件
3)filepaths.xml文件
4)添加Glide引擎
5、MainActivity中使用
6、參考

Matisse: https://github.com/hu/Matisse
RxPermissions: https://github.com/tbruyelle/RxPermissions

根目錄build.gradle添加

app的build.gradle添加

注意添加的許可權及provider

注意:

的值要與 MainActivity 中使用的值一致,不一定要包名。

AndroidManifest.xml 中 android:resource="@xml/filepaths" 主要是拍攝照片後的路徑的設置,需要廳迅在 res 文件夾下添加 xml 文件夾,然後添加 filepaths.xml

activity_main.xml

Android隨筆——Matisse的完整使用
圖片選擇器 Matisse 在 6.0 以上手機使用相機以及選擇圖片過濾小圖功能
利用FileProvider建立文件分享
Matisse 知乎圖片選擇框架

『陸』 如何開發Android應用框架

在Android開發中能夠知道和使用一些好用的第三方支持,省去自己的很多時間,下面涉及到的多為經過歷史興衰與檢驗的,江山代有人才出一代更比一代強,有些已經被更新更好用的所取代,但也很多地方仍可圈滑模可點不乏參考,有些依然經典,整理出來請君一參.歡迎大家的指正,補充與交流.
1、AndBase框架
項目地址: https://code.jd.com/zhaoqp2010_m/andbase
1.andbase中包含了大量的開發常用手段。
如網路下載,多線程與線程池的管理,資料庫ORM,圖片緩存管理,圖片文件下載上傳,Http請求工具,常用工具類(字元串,日期,文件處理,圖片處理工具類等),能夠使您的應用在團隊開發中減少冗餘代碼,很大的提高了代碼的維護性與開發高效性,能很好的規避由於開發疏忽而導致常犯的錯誤。
2.andbase封裝了大量的常用控制項。
如list分頁,下拉刷新,圖片輪播,表格,多線程下載器,側邊欄,圖片上傳,輪子選擇,圖表,Tab滑動,日歷選擇器等。
3.強大的AbActivity,您沒有理由不繼承它。
繼承它你能夠獲得一個簡單強大可設置的操作欄,以及一系列的簡單調用,如彈出框,提示框,進度框,副畝讓沒操作欄等。
4.提供效率較高圖片緩存管理策略,使內存大幅度節省,利用率提高,效率提高。
程序中要管理大量的圖片資源,andbase提供簡單的方法,幾步完成下載與顯示,並支持縮放,裁剪,緩存功能。
5.封裝了大量常見工具類。
包括日期,字元,文件,圖片等各種處理函數, 多而全。
6.用andbase大量減少handler的使用,而採用回調函數,代碼更整潔。
handler會產生大量代碼,迅納並且不好維護,andbase對handler進行了封裝。
7.簡單輕量支持註解自動建表的ORM框架(支持一/多對多的關聯操作)。
寫sql,建表,工作量大,andbase提供更傻瓜非同步增刪改查工具類。
8.非同步請求http框架,網路請求標准化,支持文件上傳下載,get,post,進度顯示。
包含了非同步與http請求的工具類,實用。

2、XUtil框架
項目地址:https://github.com/wyouflf/xUtils
主要有四大模塊:
(1) 資料庫模塊:Android中的orm框架,一行代碼就可以進行增刪改查;
支持事務,默認關閉;
可通過註解自定義表名,列名,外鍵,唯一性約束,NOT NULL約束,CHECK約束等(需要混淆的時候請註解表名和列名);
支持綁定外鍵,保存實體時外鍵關聯實體自動保存或更新;
自動載入外鍵關聯實體,支持延時載入;
支持鏈式表達查詢,更直觀的查詢語義,參考下面的介紹或sample中的例子。
(2) 註解模塊:android中的ioc框架,完全註解方式就可以進行UI,資源和事件綁定;
新的事件綁定方式,使用混淆工具混淆後仍可正常工作;
目前支持常用的20種事件綁定,參見ViewCommonEventListener類和包com.lidroid.xutils.view.annotation.event。
(3) 網路模塊:支持同步,非同步方式的請求;
支持大文件上傳,上傳大文件不會oom;
支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT請求;
下載支持301/302重定向,支持設置是否根據Content-Disposition重命名下載的文件;
返迴文本內容的請求(默認只啟用了GET請求)支持緩存,可設置默認過期時間和針對當前請求的過期時間。
(4) 圖片緩存模塊:載入bitmap的時候無需考慮bitmap載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象;
支持載入網路圖片和本地圖片;
內存管理使用lru演算法,更好的管理bitmap內存;
可配置線程載入線程數量,緩存大小,緩存路徑,載入顯示動畫等...
3、ThinkAndroid框架
項目地址:https://github.com/white-cat/ThinkAndroid
主要有以下模塊:
(1) MVC模塊:實現視圖與模型的分離。
(2) ioc模塊:android中的ioc模塊,完全註解方式就可以進行UI綁定、res中的資源的讀取、以及對象的初始化。
(3) 資料庫模塊:android中的orm框架,使用了線程池對sqlite進行操作。
(4) http模塊:通過httpclient進行封裝http數據請求,支持非同步及同步方式載入。
(5) 緩存模塊:通過簡單的配置及設計可以很好的實現緩存,對緩存可以隨意的配置
(6) 圖片緩存模塊:imageview載入圖片的時候無需考慮圖片載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。
(7) 配置器模塊:可以對簡易的實現配對配置的操作,目前配置文件可以支持Preference、Properties對配置進行存取。
(8) 日誌列印模塊:可以較快的輕易的是實現日誌列印,支持日誌列印的擴展,目前支持對sdcard寫入本地列印、以及控制台列印
(9) 下載器模塊:可以簡單的實現多線程下載、後台下載、斷點續傳、對下載進行控制、如開始、暫停、刪除等等。
(10) 網路狀態檢測模塊:當網路狀態改變時,對其進行檢

4、LoonAndroid
項目地址:https://github.com/gdpancheng/LoonAndroid
主要有以下模塊:
(1) 自動注入框架(只需要繼承框架內的application既可)
(2) 圖片載入框架(多重緩存,自動回收,最大限度保證內存的安全性)
(3) 網路請求模塊(繼承了基本上現在所有的http請求)
(4) eventbus(集成一個開源的框架)
(5) 驗證框架(集成開源框架)
(6) json解析(支持解析成集合或者對象)
(7) 資料庫(不知道是哪位寫的 忘記了)
(8) 多線程斷點下載(自動判斷是否支持多線程,判斷是否是重定向)
(9) 自動更新模塊
(10) 一系列工具類
5、volley
項目地址 :https://github.com/smanikandan14/Volley-demo
(1) JSON,圖像等的非同步下載;
(2) 網路請求的排序(scheling)
(3) 網路請求的優先順序處理
(4) 緩存
(5) 多級別取消請求
(6) 和Activity和生命周期的聯動(Activity結束時同時取消所有網路請求)
6、android-async-http
項目地址:https://github.com/loopj/android-async-http
文檔介紹:http://loopj.com/android-async-http/
(1) 在匿名回調中處理請求結果
(2) 在UI線程外進行http請求
(3) 文件斷點上傳
(4) 智能重試
(5) 默認gzip壓縮
(6) 支持解析成Json格式
(7) 可將Cookies持久化到SharedPreferences
7、Afinal框架
項目地址:https://github.com/yangfuhai/afinal
主要有四大模塊:
(1) 資料庫模塊:android中的orm框架,使用了線程池對sqlite進行操作。
(2) 註解模塊:android中的ioc框架,完全註解方式就可以進行UI綁定和事件綁定。無需findViewById和setClickListener等。
(3) 網路模塊:通過httpclient進行封裝http數據請求,支持ajax方式載入,支持下載、上傳文件功能。
(4) 圖片緩存模塊:通過FinalBitmap,imageview載入bitmap的時候無需考慮bitmap載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。
FinalBitmap可以配置線程載入線程數量,緩存大小,緩存路徑,載入顯示動畫等。FinalBitmap的內存管理使用lru演算法,
沒有使用弱引用(android2.3以後google已經不建議使用弱引用,android2.3後強行回收軟引用和弱引用,詳情查看android官方文檔),
更好的管理bitmap內存。FinalBitmap可以自定義下載器,用來擴展其他協議顯示網路圖片,比如ftp等。同時可以自定義bitmap顯示器,
在imageview顯示圖片的時候播放動畫等(默認是漸變動畫顯示)。
總結框架結構,
ImageLoader框架(第8大框架)

UniversalImageLoader是用於載入圖片的一個開源項目,在其項目介紹中是這么寫的,
支持多線程圖片載入
提供豐富的細節配置,比如線程池大小,HTPP請求項,內存和磁碟緩存,圖片顯示時的參數配置等等;
提供雙緩存
支持載入過程的監聽;
提供圖片的個性化顯示配置介面;
Widget支持(這個,個人覺得沒必要寫進來,不過尊重原文)
其他類似的項目也有很多,但這個作為github上著名的開源項目被廣泛使用。第三方的包雖然好用省力,可以有效避免重復造輪子,但是卻隱藏了一些開發上的細節,如果不關注其內部實現,那麼將不利於開發人員掌握核心技術,當然也談不上更好的使用它,計劃分析項目的集成使用和低層實現。

開源框架android-async-http(第9大框架)
官網:https://github.com/loopj/android-async-http

Android-async-http開源框架可以是我們輕松的獲取網路數據或者向伺服器發送數據,使用起來也簡單,詳細請看官網:
到官網下載zip包,解壓,裡面有完整的代碼和各種版本的jar包和demo,源碼在library裡面,jar包在releases裡面。項目更新速度很快,老版本的回調是一個普通類,最新版是一個介面。

KJFrameForAndroid框架(第10大框架)
參考:http://www.codeceo.com/article/android-orm-kjframeforandroid.html

KJFrameForAndroid是一款基於Android的ORM和 IOC應用開發框架,封裝了很多Android開發中常用的功能,包括Android中對Bitmap的操作類庫。KJFrameForAndroid的設計非常精簡,利用KJFrameForAndroid,我們可以用最少的代碼完成很多豐富的Android功能應用,為Android開發者節省許多不必要的開發時間。
KJFrameForAndroid總共分為五大模塊:UILibrary,UtilsLibrary,HttpLibrary,BitmapLibrary,DBLibrary。

Android-async-http開源框架可以是我們輕松的獲取網路數據或者向伺服器發送數據,使用起來也簡單,詳細請看官網:
到官網下載zip包,解壓,裡面有完整的代碼和各種版本的jar包和demo,源碼在library裡面,jar包在releases裡面。項目更新速度很快,老版本的回調是一個普通類,最新版是一個介面。

『柒』 Android圖片框架對比

對比現在主流圖片框架的優勢和缺點,在實際項目中如何選擇適合自己的框架;

Glide、孝胡Fresco、Picasso、ImageLoader
共同優點:

以上名詞介紹

在分析他們的差異、優缺點之前,我們先了解圖片緩存通用的概念:

以上概念在不同框架之間可能不同,比如Displayer在ImageLoader中叫做ImageAware,在Picasso和Glide中叫做Target。

以上為Glide的總體設計圖。
整個庫分為RequestManager(請求管理器)、Engine(數據獲取引擎)、Fetcher(數據獲取器)、MemoryCache(內存緩存)、DiskLRUCache(本地緩存)、Transformation(圖片處理)、Encoder(編碼處理)、Registry(圖片類型以及解析器配置)、Target(目標)等模塊。

簡單流程: Glider收到載入及顯示資源任務,創建Request並將它交給RequestManager,Request啟動Engine去數據源獲取資源,得到資含宴源後通過Transformation處理後交給Target.
Glide依賴DiskLRUCache、GifDecoder等開源庫去完成本地緩存和Gif圖片解密工作;

為Bitmap 維護一個BitmapPool對象池, 對象池的主要目的是通過減少大對象的分配以重用來提高性能!

缺點
①圖片質量低:因為機制不同,速度快,但是圖片的質量降低了RGB565;
②多尺寸緩存導致內存和磁碟佔用多:根據ImageView大小來緩存,可能會導致一張圖片可能根據展示情況來緩存不同尺寸的幾份;

擴展理解參考: https://www.jianshu.com/p/1ab5597af607

以上為Picasso的總體設計圖。
整個庫分為Dispatcher、RequestHandler以及Downloader、PicassoDrawable等模塊。
簡單流程: Picasso收到載入顯示圖片任務後,創建Request並將它交給Dispatcher,Dispatcher分發任務到具體RequestHandler,任務通過MemoryCache及Handler(數據獲取介面)獲取圖片,圖片獲取成功後通過PicassoDrawable顯示到Target中;

上面Data的File system部分,Picasso沒有自定義本地緩存的介面,默認使用http的本地緩存,API19以上使用okhttp,一下使用UrlConnection,所以如果需要自定義本地緩存就需要自定義Downloader;

缺點 :載入速度沒有其他框架快;
特點 :只緩存一個全尺寸的圖片,根據需求的大小在壓縮轉換;

以上為Fresco的總體設計圖
整個庫分為UI:DraweeView(View控制項)、Drawable(圖片數據)、DraweeController(圖片控制器)、DraweeHiierarchy(圖片體系);Core:DataSource(數據源)、ImagePipeline(圖像管道)、Procer(生產者)、ProcerFacotry(生產工廠)、Subcriber(訂閱)、Supplier(供應者)、Consumer(消費者);IO/Data:MemoryCache(內存緩存)、Network、DiskCache(磁碟緩存)、Recourse(本地資源)

簡單流程: 從上面的結構可以看出,fresco主要採用了工廠+建造者的模式實現功能,邏輯劃分比較巧老攔清楚;Fresco框架整體是一個MVC模式,DrawableView--->View用來顯示頂層視圖、DrawableController--->Control控制載入圖片的配置 事件的分發、DrawableHierarchy--->Model 用於存儲和描述圖片信息,同時也封裝了一些圖片的顯示和視圖層級的方法;ImagePipeline模塊負責從網路、本地文件系統、本地資源載入圖片

缺點:
①框架大,影響Apk體積;
②一定的學習成本,使用比較繁瑣,需要使用內部提供的ImageView控制項,使用起來比較復雜;

『捌』 Android 圖片載入(一)高效載入Bitmap 基礎篇

由於Bitmap的特殊性以及Android對單個應用所規定的最大內存限制,我們在同時載入大量Bitmap時很容易發生內存溢出,即我們通常所說的OutOfMemoryError(OOM),因此高效載入Bitmap就成為了每個Android開發者的必備技能。

在學習如何高效地載入Bitmap之前,首先介紹一下如何載入一個Bitmap。我們都知道,Bitmap在Android中通常指的是一張圖片,那麼如何將JPG、PNG等格式的圖片轉換成Bitmap對象呢?BitmapFactory類給我們提滾埋供了一些方法:

接下來開始介紹如何高效地載入Bitmap,其實核心思想很簡單: 就是採用BitmapFactory.Options參數來調整圖片尺寸來適配控制項的大小。

假如我們顯示圖片的控制項ImageView寬高為100×100像素,而圖片的尺寸為1024×1024像素,這個時候如果將飢備源整個圖片載入進來並顯示到控制項上,自然是很佔用內存資源的。這個時候可以通過BitmapFactory.Options按一定的采樣率載入縮小後的圖片,再將縮小後的圖片爛態顯示到ImageView中,這樣就能減小內存佔用從而在一定程度上避免OOM的發生。

通過BitmapFactory.Options來縮放圖片,主要是使用它的inSampleSize參數,也就是前面提到的采樣率。當采樣率inSampleSize為1時,采樣後的圖片大小為原圖大小;當采樣率inSampleSize>1,比如為2時,采樣後的圖片寬高都為原圖的1/2,即像素降為原圖的1/4,佔用的內存大小也就是原圖的1/4;比較特殊的是,當采樣率inSampleSize<1時,系統會自動將該值當做1來處理。 因此可以得出一個結論:采樣率inSampleSize必須是大於1的整數圖片才會有縮小的效果,並且采樣率同時作用於寬高,也就是說采樣後的圖片會縮小到原圖的1/(inSampleSize^2)。比如inSampleSize=4,那麼縮放比例為1/16。

我們現在知道了,通過采樣率可以提高圖片的載入效率,那麼如何才能計算出最合適的采樣率?我們可以按照如下流程:

接下來以decodeFile方法為例實現圖片的縮放,其他三個方法處理方式類似。

下一篇: Android 圖片載入(二)圖片載入框架Glide 入門篇

《Android開發藝術探索》

『玖』 現在安卓用什麼框架

1、volley

項目地址 https://github.com/smanikandan14/Volley-demo
(1) JSON,圖像等的非同步下載;
(2) 網路請求的排序(scheling)
(3) 網路請求的優先順序處理
(4) 緩存
(5) 多級別取消請求
(6) 和Activity和生命周期的聯動(Activity結束時同時取消所有網路請求)
2、android-async-http

項目地址:https://github.com/loopj/android-async-http
文檔介紹:http://loopj.com/android-async-http/
(1) 在匿名回調中處理請求結果
(2) 在UI線程外進行http請求
(3) 文件斷點上傳
(4) 智能重試
(5) 默認gzip壓縮
(6) 支持解析成Json格式
(7) 可將Cookies持久化到SharedPreferences
3、Afinal框架

項目地址:https://github.com/yangfuhai/afinal
主要有四大模塊:
(1) 資料庫模塊:android中的orm框架,使用了線程池對sqlite進行操作。
(2) 註解模塊:android中的ioc框架,完全註解方式就可以進行UI綁定和事件綁定。無需findViewById和setClickListener等。
(3) 網路模塊:通過httpclient進行封裝http數據請求,支持ajax方式載入,支持下載、上傳文件功能。
(4) 圖片緩存模塊:通過FinalBitmap,imageview載入bitmap的時候無需考慮bitmap載入過程中出搭鬧現的oom和android容器快速滑動時候出現的圖片錯位等現象。
FinalBitmap可以配置線程載入線程數量,緩存大小,緩存路徑,載入顯示動畫等。FinalBitmap的內存管理使用lru演算法,
沒有使用弱引用(android2.3以後google已經歲衡不建議使用弱引用,android2.3後強行回收軟引用和弱引用,詳情查看android官方文檔),
更好的管理bitmap內存。FinalBitmap可以自定義下載器,用來擴展其他協議顯示網路圖片,比如ftp等。同時可以自定義bitmap顯示器,
在imageview顯示圖片的時候播放動畫等(默認是漸變動畫顯示)。
4、xUtils框架

項目地址:https://github.com/wyouflf/xUtils
主要有四大模塊:
(1) 資料庫模塊:android中的orm框架,一行代碼就可以進行增刪改查;
支持事務,默認關閉;
可通過註解自定義表名,列名,外鍵,唯一性約束,NOT NULL約束,CHECK約束等(需要混淆的時候請註解表名和列名);
支持綁定外鍵,保存實體時外鍵關聯實體自動保存或更新;
自動載入外知雀罩鍵關聯實體,支持延時載入;
支持鏈式表達查詢,更直觀的查詢語義,參考下面的介紹或sample中的例子。
(2) 註解模塊:android中的ioc框架,完全註解方式就可以進行UI,資源和事件綁定;
新的事件綁定方式,使用混淆工具混淆後仍可正常工作;
目前支持常用的20種事件綁定,參見ViewCommonEventListener類和包com.lidroid.xutils.view.annotation.event。
(3) 網路模塊:支持同步,非同步方式的請求;
支持大文件上傳,上傳大文件不會oom;
支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT請求;
下載支持301/302重定向,支持設置是否根據Content-Disposition重命名下載的文件;
返迴文本內容的請求(默認只啟用了GET請求)支持緩存,可設置默認過期時間和針對當前請求的過期時間。
(4) 圖片緩存模塊:載入bitmap的時候無需考慮bitmap載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象;
支持載入網路圖片和本地圖片;
內存管理使用lru演算法,更好的管理bitmap內存;
可配置線程載入線程數量,緩存大小,緩存路徑,載入顯示動畫等...
5、ThinkAndroid

項目地址:https://github.com/white-cat/ThinkAndroid
主要有以下模塊:
(1) MVC模塊:實現視圖與模型的分離。
(2) ioc模塊:android中的ioc模塊,完全註解方式就可以進行UI綁定、res中的資源的讀取、以及對象的初始化。
(3) 資料庫模塊:android中的orm框架,使用了線程池對sqlite進行操作。
(4) http模塊:通過httpclient進行封裝http數據請求,支持非同步及同步方式載入。
(5) 緩存模塊:通過簡單的配置及設計可以很好的實現緩存,對緩存可以隨意的配置
(6) 圖片緩存模塊:imageview載入圖片的時候無需考慮圖片載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。
(7) 配置器模塊:可以對簡易的實現配對配置的操作,目前配置文件可以支持Preference、Properties對配置進行存取。
(8) 日誌列印模塊:可以較快的輕易的是實現日誌列印,支持日誌列印的擴展,目前支持對sdcard寫入本地列印、以及控制台列印
(9) 下載器模塊:可以簡單的實現多線程下載、後台下載、斷點續傳、對下載進行控制、如開始、暫停、刪除等等。
(10) 網路狀態檢測模塊:當網路狀態改變時,對其進行檢
6、LoonAndroid

項目地址:https://github.com/gdpancheng/LoonAndroid
主要有以下模塊:
(1) 自動注入框架(只需要繼承框架內的application既可)
(2) 圖片載入框架(多重緩存,自動回收,最大限度保證內存的安全性)
(3) 網路請求模塊(繼承了基本上現在所有的http請求)
(4) eventbus(集成一個開源的框架)
(5) 驗證框架(集成開源框架)
(6) json解析(支持解析成集合或者對象)
(7) 資料庫(不知道是哪位寫的 忘記了)
(8) 多線程斷點下載(自動判斷是否支持多線程,判斷是否是重定向)
(9) 自動更新模塊
(10) 一系列工具類

閱讀全文

與安卓如何設計圖片載入框架相關的資料

熱點內容
漫威可愛姑娘圖片 瀏覽:77
螃蟹人一拳超人圖片高清 瀏覽:860
word中的域圖片 瀏覽:703
美女衣服透明圖片 瀏覽:894
男孩小貝發型圖片大全 瀏覽:907
女生名字字體圖片 瀏覽:237
不超過6m的圖片如何設置 瀏覽:205
西遊記美女畫像圖片 瀏覽:861
修改圖片如何用剪切器 瀏覽:758
七級漫畫人物圖片女生兩人 瀏覽:8
生日快樂板報簡單圖片 瀏覽:785
好看的qq頭像動漫男生圖片 瀏覽:440
高清酸菜蹄花圖片大全 瀏覽:42
播放做漂亮衣服的圖片 瀏覽:850
怎麼將圖片做成文件稿 瀏覽:783
抱小狗的男生圖片 瀏覽:316
美女m4圖片 瀏覽:950
寶寶x型腿怎麼判斷圖片 瀏覽:440
海賊王里最帥衣服圖片 瀏覽:311
女孩子裝葯掉的圖片 瀏覽:613