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