項目上需要對一些用戶圖片作處理(較復雜的處理,android自帶的API實現不瞭,通過算法自己實現),當用戶選中某張圖片a.jpg的時候先將原圖顯示在ImageView中(不論圖片大小,如果圖片較大ImageVIew等比例縮小顯示),因為是自己去處理圖片,當然是圖片越小處理越快越好,所以項目上決定采用圖片顯示的副本來處理而非原圖(因為原圖可能會很大)。
問題:
為瞭偷點懶,我是從ImageView.getDrawingCache方法獲取的副本,因為這個副本才是真正的顯示大小的副本(imageView.getDrawable,這個方法獲取的是原圖大小的圖片),我的代碼如下:
view source
1 imageView.setDrawingCacheEnabled(Boolean.TRUE);
2 Bitmap tempBitmap = Bitmap.createBitmap(imageView.getDrawingCache());
3 imageView.setDrawingCacheEnabled(Boolean.FALSE); //clear drawing cache
這個代碼我在模擬器上運行沒問題,tempBitmap是有值的,不為null;
當我在真機上測試時問題來瞭,tempBitmap 為 null;imageView.getDrawingCache()這個方法根本沒獲取到cache。
在網上查瞭點其他資料,都試瞭試沒解決到問題,望有高人給點指點
開發環境android 2.3.3,真機android 2.3.5
會不會是因為這個版本的問題 ?
『分享點在國外找到點資料,可能有用的到的地方,我這按照這上面的沒解決到,但其他很多人解決到鳥
https://www.aiwalls.com/kf/201203/123437.html
摘自 tonyley3