android ImageView.getDrawingCache is NULL

tonyley 发布于 2012/03/14 16:45
阅读 2K+
收藏 0
情况描述如下:

项目上需要对一些用户图片作处理(较复杂的处理,android自带的API实现不了,通过算法自己实现),当用户选中某张图片a.jpg的时候先将原图显示在ImageView中(不论图片大小,如果图片较大ImageVIew等比例缩小显示),因为是自己去处理图片,当然是图片越小处理越快越好,所以项目上决定采用图片显示的副本来处理而非原图(因为原图可能会很大)。

问题:

为了偷点懒,我是从ImageView.getDrawingCache方法获取的副本,因为这个副本才是真正的显示大小的副本(imageView.getDrawable,这个方法获取的是原图大小的图片),我的代码如下:
imageView.setDrawingCacheEnabled(Boolean.TRUE);
Bitmap tempBitmap = Bitmap.createBitmap(imageView.getDrawingCache());
imageView.setDrawingCacheEnabled(Boolean.FALSE);  //clear drawing cache 
这个代码我在模拟器上运行没问题,tempBitmap是有值的,不为null;

当我在真机上测试时问题来了,tempBitmap 为 null;imageView.getDrawingCache()这个方法根本没获取到cache。

在网上查了点其他资料,都试了试没解决到问题,望有高人给点指点

开发环境android 2.3.3,真机android 2.3.5

会不会是因为这个版本的问题 ?

『分享点在国外找到点资料,可能有用的到的地方,我这按照这上面的没解决到,但其他很多人解决到鸟

http://stackoverflow.com/questions/2339429/android-view-getdrawingcache-returns-null-only-null
加载中
0
tonyley
tonyley
imageView.setDrawingCacheEnabled(Boolean.TRUE);
  
imageView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
imageView.layout(0, 0, imageView.getMeasuredWidth(), imageView.getMeasuredHeight()); 

Bitmap tempBitmap = Bitmap.createBitmap(imageView.getDrawingCache());

imageView.buildDrawingCache(Boolean.TRUE);

我参考『 http://stackoverflow.com/questions/2339429/android-view-getdrawingcache-returns-null-only-null』,将代码修改成以上,现在连模拟器上运行tempBitmap 也为null
返回顶部
顶部