【Android开发经验】Cannot generate texture from bitmap异常的解决方式

时间:2024-08-25 15:06:08

异常现象:

今天在处理用户头像的过程中,由于头像的处理比較复杂,由于,没有使用afinal自带的自己主动载入。而是自己依据头像的下载路径。手动进行下载和使用。可是在手动回收bitmap对象的过程中,会出现Cannot generate texture from bitmap异常的情况,同一时候,ImageView显示是黑色的,图像不能正常显示。

解决方式:

在查阅了一些其它人的资料之后,发现这可能是因为4.0之后系统开启了GPU硬件加速导致的。因此,我们能够在图片载入之前,设置ImageView为关闭硬件加速状态。因此,我们能够用以下的代码完毕。

if (SystemUtils.getSystemVersion() >= SystemUtils.V4_0) {
img_header.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

之所以要加上版本号控制。是由于设置图片的非硬件加速模式是在api11之后加入的,因此,我们须要进行版本号的控制,否则。在低版本号上执行会报错。

以下是检測版本号的帮助类SystemUtils.java

/**
*
* @ClassName: com.drd.piaojubao.utils.SystemUtils
* @Description: 当前平台系统的工具类
* @author zhaokaiqiang
* @date 2014-10-11 上午9:51:47
*
*/
public class SystemUtils { public static final int V2_2 = 8;
public static final int V2_3 = 9;
public static final int V2_3_3 = 10;
public static final int V3_0 = 11;
public static final int V3_1 = 12;
public static final int V3_2 = 13;
public static final int V4_0 = 14;
public static final int V4_0_3 = 15;
public static final int V4_1 = 16;
public static final int V4_2 = 17;
public static final int V4_3 = 18;
public static final int V4_4 = 19; /**
*
* @Description: 检測当前的版本号信息
* @param
* @return int
* @throws
*/
public static int getSystemVersion() {
return android.os.Build.VERSION.SDK_INT;
} }