自定义View setLayerType()方法会引起View重绘
2016年5月24日
在开发一个检测体温的APP时,采用了自定义View控件作为温度显示模块,之后由于需要给背景添加阴影层,调用了Paint.setShadowLayer()
方法,然而添加这个方法之后View
没有任何反应,Google
说需要给View设置软渲染,具体做法为调用View
的setLayerType(LAYER_TYPE_SOFTWARE, null)
方法,在开启它时,之后进行的绘制都会绘制到一张Bitmap(software layer)
上,绘制完成后再渲染到hardware layer
上。
官网介绍如下
然而在使用过程中,我发现View开始不停的重绘,开始以为是LAYER_TYPE_SOFTWARE
的特性,因为将其换成LAYER_TYPE_HARDWARE
就不会发生重绘,当然这样做以后上图中的阴影也没有了。。然后发现setLayerType
方法被我放在了onDraw方法里。。才发现这个方法会引起View重绘,View重绘又再次调用这个方法,于是