-
整體思路 1.如圖 2.思路 http://www.xianlaiwan.cn/space/note/uid/1859625/t/my/cid/406,eclipse中是AsyncTaskNewsDemo 和異步加載類似,在繼承自Adapter的類中重寫getView()方法。然后在關鍵的ImageLoader類中實現異步加載的操作。 3.getView(){ (1)通過url獲取Bitmap (2)對應url在LruCache中查找圖片 如果找到就返回 找不到的話,通過url產生一個Task,扔進TaskQueue中。且發送一個通知去提醒后臺輪詢線程 } 4.后臺輪詢線程 這里應該是一個Looper,TaskQueue->Task->線程池去執行 后臺輪詢線程會通過Handler+Looper+Message來實現 對應筆記:http://www.xianlaiwan.cn/space/note/cid/267 5.在getView()中如果找不到圖片就會發送一個通知去提醒后臺輪詢線程,輪詢線程會拿到一個Task讓線程池去執行。 在Task的run()方法中,會完成如下操作: Task->run(){ 根據url加載圖片: 1)獲取圖片的大小 2)通過options對圖片進行壓縮 3)加載圖片并放入LruCache }查看全部
-
好查看全部
-
,查看全部
-
這節也一太難了,看不懂。。。查看全部
-
Adapter參數的寫法-減少內存占用查看全部
-
掃描圖片-02查看全部
-
掃描圖片查看全部
-
GridView要設置的屬性查看全部
-
獲取ImageSize查看全部
-
根據ImageView的大小獲取圖片的目標大小查看全部
-
Semaphore查看全部
-
這個文件過濾方法沒有處理大寫文件名,需要修復一下,還有在測試的是,文件可能大小未0K,這樣的圖片也可以過濾掉,所以我是這么處理的 //這個文件夾下面可能有其它文件類型,所以要過濾一下 if (filename.toLowerCase().endsWith("jpg") || filename.toLowerCase().endsWith("png") || filename.toLowerCase().endsWith("jpeg")) { File tempImageFile = new File(dir,filename); //這里過濾因為下載出錯的圖片文件,一般大小是0K if (tempImageFile.exists() && tempImageFile.isFile() && tempImageFile.length() > 0) { tempImageFile = null; return true; }else{ tempImageFile = null; return false; } } return false;查看全部
-
三個目標: 盡可能的去避免內存溢出查看全部
-
Semaphore 信號量查看全部
-
不錯不錯查看全部
舉報
0/150
提交
取消