AndroidDev 板


LINE

43 badhabit大的程式看了让人真是感觉舒服 无论变数名称 编码风格跟习惯 我觉得很漂亮 看了这篇真的让我对ListView有更深刻的感受 而这篇刚好小弟之前有研究过从网路下载图片的议题 之前朋友问我怎麽从网路下载超大图片 我找了蛮久的资料 後来终於让我找到解决的写法 现在分享给大家 一般来说 网路快慢会影响取得图片的速度 而android对於存取网路资源这方面有5秒的限制 在小弟之前的文章有翻译过一篇 里面也有提到相关的议题 测试了一下badhabit大的程式 似乎没有做相关的预防 例如跑高解度的图片 会出现当机的状况 例如这张 http://ppt.cc/;fh~ 2.85mb 应该够大了:P 就会跳出这样的画面 http://uploadingit.com/file/m4oqyvohae9cqfx1/DownloadImageFail.png
因此小弟擅自改了一下badhabit大的程式 可以正常的跑 http://uploadingit.com/file/5db08oskidpcjeqo/downloadImageSuccess.png
整体程式没有变动多少 希望badhabit大不要见怪 首先我改了原本程式main.java的部分 第八行 GetWebImg ImgCache = new GetWebImg(this); 因为我下载图片的时候 需要Context 再来是GetWebImg.java的部分 小弟修改的部分有 加了建构子 public GetWebImg(Context c){ con = c; } 改了LoadUrlPic 函式 public synchronized Bitmap LoadUrlPic(Context c, String url) { URL imgUrl; Bitmap defaultImg = BitmapFactory.decodeResource(con.getResources(), wu.listview.webimg.R.drawable.icon); Bitmap webImg = null; try { imgUrl = new URL(url); } catch (MalformedURLException e) { Log.d("MalformedURLException",e.toString()); return defaultImg;//抓不到网路图时, 读预设图片 } try { HttpURLConnection httpURLConnection = (HttpURLConnection) imgUrl.openConnection(); httpURLConnection.setDoInput(true); httpURLConnection.setDoOutput(false); httpURLConnection.setUseCaches(false); httpURLConnection.connect(); InputStream inputStream = httpURLConnection.getInputStream(); int length = (int) httpURLConnection.getContentLength(); int tmpLength = 512; int readLen = 0,desPos = 0; byte[] img = new byte[length]; byte[] tmp = new byte[tmpLength]; if (length != -1) { while ((readLen = inputStream.read(tmp)) > 0) { System.arraycopy(tmp, 0, img, desPos, readLen); desPos += readLen; } webImg = BitmapFactory.decodeByteArray(img, 0,img.length); } httpURLConnection.disconnect(); } catch (IOException e) { Log.d("IOException",e.toString()); return defaultImg; //抓不到网路图时, 读预设图片 } return webImg; } 这样一来 无论多大的图片下载 它都不会当掉了 除非网站挂了 就使用预设的图片 附上改过的程式码 http://uploadingit.com/file/ylhjk0osugues8th/ListView_WebImg_update.zip 如果有观念不正确或者更好的写法 请告知小弟 避免误导大家 谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.221.115.4
1F:推 sorrel20567:给我过大大真是ANDROID分享的狂人,长知识+1 04/22 12:24
2F:推 sjrom:囧,我用1.6 emulator反而是give大的会挂点..OOM.. 04/25 20:23
3F:推 badhabit:我反而是两种都不会挂点...晚点找张更大的图来测试一下 04/26 12:54
4F:→ badhabit:sjrom 或许可以参考 http://ppt.cc/EWo8 04/26 12:55
5F:→ sjrom:ya.做法差不多,後来就直接判断size然後做bitmap options 04/26 22:44
6F:→ sjrom:因为要一次全部decocde到mem实在是太吓人..至於怎samplesize 04/26 22:45
7F:→ sjrom:就是看每个人的需求了..A_A",另外还有个可以稍稍多要点 04/26 22:47
8F:→ sjrom:另外有个 inTempStorage ,官网是建议 16k. 04/26 22:49
9F:→ sjrom:点空间的↗ 04/26 22:56
10F:→ sjrom:感谢b大提供的资讯,另外里面的loadURL function,如果mem 04/26 23:00
11F:→ sjrom:控制的好的话,可以不用宣告Synchronized ,网速够的话 04/26 23:02
12F:→ sjrom:应该会有加快loading的效果? 04/26 23:02
13F:推 badhabit:是的,我会偏向使用Thread pool,一次多张下载比较爽XD 04/26 23:21
14F:→ badhabit:不过之前是小范例就没写太多了 哈 04/26 23:22







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP