摘要:縮放加載加載大圖片使用大圖片時(shí)可能出現(xiàn)的異常在下采用來(lái)表示顏色每個(gè)像素占圖片手機(jī)寬縮放高縮放需要考慮的問(wèn)題動(dòng)態(tài)獲取圖片的分辨率動(dòng)態(tài)獲取手機(jī)分辨率實(shí)現(xiàn)步驟獲取手機(jī)屏幕的寬和高獲取圖片的寬和高創(chuàng)建的配置參數(shù)設(shè)置的值為此時(shí)方法并不會(huì)去真正
縮放加載加載大圖片(使用大圖片時(shí)可能出現(xiàn)的異常)
09-14 00:59:51.813: E/AndroidRuntime(2128): Caused by: java.lang.OutOfMemoryError
09-14 00:59:51.813: E/dalvikvm-heap(2128): Out of memory on a 30720012-byte allocation.
在Android下采用ARGB來(lái)表示顏色 每個(gè)像素占4byte
PS:
圖片:2400*3200
手機(jī):320*480
寬縮放: 7
高縮放: 6
需要考慮的問(wèn)題 :(1)動(dòng)態(tài)獲取圖片的分辨率 (2)動(dòng)態(tài)獲取手機(jī)分辨率
實(shí)現(xiàn)步驟
(1)獲取手機(jī)屏幕的寬和高 WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); Display display = windowManager.getDefaultDisplay(); int screenWidth = display.getWidth(); int screenHeight = display.getHeight();
(2)獲取圖片的寬和高 //創(chuàng)建BitmapFactor的配置參數(shù) BitmapFactory.Options options = new Options(); //設(shè)置options的inustDecodeBounds值為true options.inJustDecodeBounds = true; //此時(shí)BitmapFactory.decode方法并不會(huì)去真正加載圖片,但是可以返回圖片的一些信息(如寬和高) BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher, options); //根據(jù)options的配置信息獲取圖片的寬和高 int imgWidth = options.outWidth; int imgHeight = options.outHeight;
(3)計(jì)算縮放比 int scale = 1;//默認(rèn)的縮放比 int scaleX = imgWidth/screenWidth;//圖片寬的縮放比 int scaleY = imgHeight/screenHeight;//圖片高的縮放比 if(scaleX>scaleY && scaleX>scale){ //當(dāng)寬的縮放比大于高的縮放比,并且縮放比大于默認(rèn)縮放比時(shí),將寬的縮放比賦給默認(rèn)縮放比 scale = scaleX; }else if(scaleY>scaleX && scaleY>scale){ scale = scaleY; }
(4)按照縮放比顯示圖片 //options.inSampleSize = scale;//根據(jù)inSampleSize(采樣率)來(lái)進(jìn)行縮放,當(dāng)inSampleSize為2時(shí),圖片縮放為原圖大小的1/4; //設(shè)置options.inJustDecodeBounds值為false,即開(kāi)始真正加載圖片 options.inJustDecodeBounds = false; Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher, options); iv.setImageBitmap(bitmap);
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/66421.html
摘要:然而,中依然有可能發(fā)生內(nèi)存泄漏。所以你的安卓快速定位解決內(nèi)存泄漏掘金昨天是個(gè)好日子,程序員的節(jié)日,在這里給所有的程序員送上一份遲到的祝福。應(yīng)用內(nèi)存泄漏的定位分析與解決策略掘金,大家好,我是。 Android 性能優(yōu)化之巧用軟引用與弱引用優(yōu)化內(nèi)存使用 - Android - 掘金前言: 從事Android開(kāi)發(fā)的同學(xué)都知道移動(dòng)設(shè)備的內(nèi)存使用是非常敏感的話題,今天我們來(lái)看下如何使用軟引用與弱...
摘要:若攔截事件返回為,表示攔截,事件不會(huì)向下層的或者傳遞,表示不攔截,繼續(xù)分發(fā)事件。五注冊(cè)反注冊(cè)未成對(duì)使用引起的內(nèi)存泄漏。七集合對(duì)象沒(méi)有及時(shí)清理引起的內(nèi)存泄漏。 原文鏈接:https://blog.csdn.net/wen_hah... 版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接! 前言 金三銀四到來(lái)了,找工作的好時(shí)候到了,小伙伴們是不是都在忙著找工作呢,小弟前一陣也是忙著在找工作,...
摘要:方案未引起重視,并沒(méi)有做出相應(yīng)處理。頁(yè)面中元素的布局是相對(duì)的,因此一個(gè)元素的布局發(fā)生變化,會(huì)聯(lián)動(dòng)地引發(fā)其他元素的布局發(fā)生變化。這里可以使用的和來(lái)分析的性能。寫(xiě)在最后性能優(yōu)化是一門做減法的藝術(shù)。 歡迎一起交流 歡迎關(guān)注我的個(gè)人公眾號(hào),不定期更新自己的工作心得。showImg(https://segmentfault.com/img/bVEk23?w=258&h=258); 正文從這里開(kāi)始...
閱讀 2901·2021-11-24 09:39
閱讀 4397·2021-10-27 14:19
閱讀 2134·2021-08-12 13:25
閱讀 2389·2019-08-29 17:07
閱讀 1176·2019-08-29 13:44
閱讀 1166·2019-08-26 12:17
閱讀 517·2019-08-23 17:16
閱讀 2109·2019-08-23 16:46