android如何把view转为bitmap,其实很简单,注意到view里都有一个onDraw函数,对于一般的view,重绘会触发这个函数,我们只需要把bitmap给这个canvas,自然,view上的所有子组件都绘在这个bitmap上了。对于viewgroup,因为它不会触发onDraw,所以需要重写dispatchDraw,原理跟onDraw一样。
重写后如下:
@Override
protected void dispatchDraw(Canvas canvas) {
if(this.bitmap==null){
this.initWidth();
this.bitmap = Bitmap.createBitmap(this.width, this.height, Config.ARGB_8888);
this.canvas = new Canvas(this.bitmap);
this.canvas.drawBitmap(bitmap, 0, 0, null);
super.dispatchDraw(this.canvas);
}else if(this.bitmap!=null){
left -=1;
if(left<-this.width){
left = this.width;
}
//super(canvas);
canvas.drawBitmap(this.bitmap, this.left, 0, null);
this.canvas = canvas;
}
invalidate();
}