k_width] >> 24&0xff)< ALPHA_BLUR ||
(alpha_arr[(j+EDGE_WIDTH)+i*back_width] >> 24&0xff)< ALPHA_BLUR){
icon_arr[i*icon_width+j] = 0;
}
}
}
}
mGarbage.setBackgroundDrawable(backgroundDrawable);
mGarbage.setImageBitmap(Bitmap.createBitmap(icon_arr, icon_width, icon_height, Config.ARGB_8888));
return mGarbage.getDrawingCache();
}
以上这段代码是采用切的方法实现对图标处理方法,主要来讲就是首先进行标准化,将ICON与背板处理到相同大小,只缩不放大,防止ICON变形,通过背板的Alpha视图,采样绘制ICON,最终实现对ICON的绘制。通过对上述代码分析,由于对图标采用的是扫描方式进行处理,也就是说80X80的图标,要计算6400次,一个图标还好,要是有2,3百个图标,效率确实有些低。关键是效果不太好,由于该方法采用的是采样的方式,对于背板特别不规则的会导致图标边缘切割有许多毛刺,这个问题是该算法自身的问题,采用切的算法,不会有更好的效果,这是该算法本身决定的,如果要达到最优效果,只有更换算法换一种思路。