-
整体思路 1.如图 2.思路 http://www.imooc.com/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.imooc.com/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
提交
取消