如下内容,请问参数canvas是怎么得来的?

@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
int r=getWidth()/2;
int centerX=getLeft()+r;
int centerY=getTop()+r;
Paint paint=new Paint();
paint.setColor(Color.RED);
canvas.drawCircle(centerX,centerY,r,paint);
}

qq_笑_17
浏览 186回答 1
1回答

慕哥9229398

上图,draw方法会调用onDraw。ViewRootImpl.java中如果是软件绘制的话,drawSoftWare方法会调用view.draw()方法。从上图中可以看到canvas来源于mSurface.lockCanvas。这里会调用到native层,简单点说就是去申请了一块buffer。这个时候canvas就可以用了,接下来就会调用view.draw方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android