zoukankan      html  css  js  c++  java
  • 【Android开发经验】Cannot generate texture from bitmap异常的解决方式

    异常现象:

        今天在处理用户头像的过程中,由于头像的处理比較复杂,由于,没有使用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;
    	}
    
    }



  • 相关阅读:
    实现Vector对象的序列化的例子
    BigDecimal
    java.io.Serializable引发的问题——什么是序列化?在什么情况下将类序列化?
    删除表中重复记录的方法
    使用PreparedStatement为不同的数据库编写可移植的数据库存取方法
    hsqldb介绍
    ant管理项目
    在jsp中点击按钮,在bean中把已经查出的数据,生成csv文件,然后在ie中自动打开
    用JAVA操作日期类型
    ORACLE默认用户的问题?
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7349164.html
Copyright © 2011-2022 走看看