標籤:des android style class blog code
最近跟同學們做了一個創業項目,其實跟以前做項目不同,以前大多數都是做web網站,對記憶體管理這些不太關注,因為是pc機,做android的話也就是一些小列子,現在到了做產品階段吧,只能把項目做到最優。不扯了,先來說這個架構是做什麼的,Android-Universal-Image-Loader主要是一個圖片的緩衝架構,根據官方解釋就是,它提供了一個非同步處理圖片的方案。它提供兩種擷取圖片方式async or sync,並且提供了一個可定製化的組件(thread executors, downloader, decoder, memory and disk cache, display image options, etc),它會把圖片首先緩衝到本地,然後在從本地進行讀取這些圖片,
這是官方使用的
先來說說怎麼使用它:首先在github上面下載Android-Universal-Image-Loader,加入到你的android項目裡面,然後記得一定要加上這兩個許可權,否則這個緩衝架構是不能夠使用的
<manifest> <uses-permission android:name="android.permission.INTERNET" /> <!-- Include next permission if you want to allow UIL to cache images on SD card --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ... <application android:name="MyApplication"> ... </application></manifest>
然後在代碼裡對該緩衝架構進行配置,之所以說它是一個很靈活的東西,是因為它裡面的大多數參數都可以手動設定,組件通用化程度高,幾乎不需要進行複寫。
這是我大概根據官方文檔翻譯的一些配置,其實對於大家來說,用預設的即可,除非是有特殊要求。
先開始使用的第一步:
配置ImageLoaderConfiguration這個類實現全域ImageLoader
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(activity).memoryCacheExtraOptions(640, 480)// 儲存每個緩衝圖片的最大長和寬.threadPoolSize(3)// 線程池的大小 這個其實預設就是3.memoryCacheSize(2 * 1024)// 設定緩衝的最大位元組.denyCacheImageMultipleSizesInMemory()// 緩衝顯示不同大小的同一張圖片.imageDownloader(new BaseImageDownloader(activity, 5 * 1000, 30 * 1000)) // connectTimeout// s)逾時時間.build();ImageLoader imageLoader = ImageLoader.getInstance();imageLoader.init(config);
這是我大概需要的一些參數配置。
第二步
配置一些圖片選項
DisplayImageOptions options;options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_launcher) // 設定圖片在下載期間顯示的圖片.showImageForEmptyUri(R.drawable.ic_launcher)// 設定圖片Uri為空白或是錯誤的時候顯示的圖片.showImageOnFail(R.drawable.ic_launcher) // 設定圖片載入/解碼過程中錯誤時候顯示的圖片.cacheInMemory(true)// 設定下載的圖片是否緩衝在記憶體中.cacheOnDisk(true)// 設定下載的圖片是否緩衝在SD卡中.displayer(new FadeInBitmapDisplayer(100))// 是否圖片載入好後漸入的動畫時間.build();
這是大概的一個配置狀況,在下一篇會用一個listView的執行個體來講解這個架構的具體使用