Re: [分享] 在ListView顯示網路圖片+快取
不好意思把這篇文又挖出來,
請問一下,我把原po的project給run起來之後很ok沒什麼問題
但是改放在 fragment 裏面而不是 activity
整個畫面滑動變超卡的,怎麼會這樣?
※ 引述《givemepass (〆)》之銘言:
: 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: 114.40.167.55
推
10/30 13:28, , 1F
10/30 13:28, 1F
→
10/30 15:51, , 2F
10/30 15:51, 2F
→
10/30 15:51, , 3F
10/30 15:51, 3F
→
10/30 15:52, , 4F
10/30 15:52, 4F
→
10/30 15:52, , 5F
10/30 15:52, 5F
→
10/30 15:52, , 6F
10/30 15:52, 6F
→
10/30 15:55, , 7F
10/30 15:55, 7F
→
10/30 15:56, , 8F
10/30 15:56, 8F
→
10/30 15:56, , 9F
10/30 15:56, 9F
→
10/30 16:54, , 10F
10/30 16:54, 10F
→
10/30 16:54, , 11F
10/30 16:54, 11F
→
10/30 18:00, , 12F
10/30 18:00, 12F
→
10/30 18:01, , 13F
10/30 18:01, 13F
推
10/30 20:19, , 14F
10/30 20:19, 14F
→
10/30 20:21, , 15F
10/30 20:21, 15F
→
10/30 20:30, , 16F
10/30 20:30, 16F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章