Android 加載大圖問題

關於如何加載大圖片及其原理,能夠參考: Android 高清加載巨圖方案 拒絕壓縮圖片 以及開源項目LargeImage,第一次使用的時候能正常顯示,但後來卻沒法顯示(圖片替換了),也沒顯示錯誤,查看bug,有一個信息: IllegalArgumentException: rectangle is not inside the image,不過不要被這條信息矇蔽了,你在進行調試的時候,你會發現其實並未真正的超出範圍,但仍是輸出這樣的結果。當時屏幕是能夠滑動的(沒法顯示圖片,但圖片高度仍是填充了界面中的scrollview),此刻發現log會一直警告:java

 Bitmap too large to be uploaded into a texture (440x6405, max=4096x4096)

由此就真相大白了,原來是由於當開啓硬件加速的時候,GPU對於openglRender 有一個限制,這個不一樣的手機會有不一樣的限制:android

這個限制值能夠經過canvas.getMaximumBitmapHeight()和canvas.getMaximumBitmapWidth()來得到。git

解決方案有兩條:http://blog.csdn.net/ta893115871/article/details/9043559github

一、一個解決的方法是禁止硬件加速,簡單粗暴:<application android:hardwareAccelerated="false" ...>canvas

二、將圖片分紅不一樣的塊,每次加載須要的塊。android提供了一個方法(其實加載大圖片就是採起這樣的方案,但仍是出現上述問題,這個問題沒想明白)app

相關文章
相關標籤/搜索