在android中查看onDraw(画布c)与draw(画布c)的对比?
我是android开发新手,我正在探索在android中查看onDraw(画布c)与draw(画布c)的对比?,android,view,android-canvas,Android,View,Android Canvas,我是android开发新手,我正在探索视图。我遇到了两种已知的方法onDraw(Canvas c)和draw(Canvas c) 请给我解释一下这两种方法的区别和用法好吗?使用图像更新画布时,哪种方法可以提供更好的性能(FPS)?它们之间存在差异 是一种覆盖方法,在渲染视图时自动调用。在这里,你可以做你的附加绘图,比如画圆、线或任何你想要的东西 用于手动将此视图(及其所有子视图)渲染到给定画布。在调用此函数之前,视图必须已完成完整布局。实现视图时,实现onDraw(android.graphic
视图
。我遇到了两种已知的方法onDraw(Canvas c)
和draw(Canvas c)
请给我解释一下这两种方法的区别和用法好吗?使用图像更新画布时,哪种方法可以提供更好的性能(FPS)?它们之间存在差异
onDraw(android.graphics.Canvas)
,而不是重写此方法。如果确实需要重写此方法,请调用超类版本或者简单地说,draw(Canvas c)只是视图的一个函数,您可以在第一次渲染视图后调用它。此功能可用于任何视图上的自定义图形。您需要提供此视图将在其上呈现的画布,并且在调用此函数之前必须在画布上进行所有绘制 如果有人像我一样一直在寻找答案,却没有找到答案 当视图需要重新绘制时,框架调用draw()方法,然后draw()方法调用onDraw()来绘制视图的内容
void draw(Canvas canvas)
{
..... do default stuff (background, layers)
onDraw(canvas)
..... do other stuff ( scroll bars, fading edges, children)
}
由于API文档的笨拙,人们对此有一种误解。
简短的回答是:<代码>绘制(画布)< /C>是在视图上做一些重要的事情,在“代码>画图(画布)< /COD>实现的某个地方,它也会触发<代码> OnDead(画布)< /Cult>回调。
- 在实现用于布局内部的自定义
视图时,不要覆盖
。draw(Canvas)
- 如果您的自定义视图打算用作全屏游戏,那么覆盖
将在每个周期为您节省一些不必要的调用draw()
- 框架在其绘制周期中使用
。这是我可以在视图代码中找到的内容:draw(Canvas)
- 步骤1:如果需要,绘制背景
- 步骤2:保存画布的图层
- 第3步:绘制内容--
来到这里onDraw()
- 第四步:画孩子们
- 步骤5:绘制淡入淡出效果并恢复图层
- 步骤6:绘制滚动条
- 您可以将任何视图渲染为创建的屏幕外位图,然后在任何位置使用此位图:
Canvas c = new Canvas(); c.setBitmap(myOffscreenBitmap); myView.draw(c);
- 对于简单的情况(当它不是视图组并且不需要滚动条时),简单的
也可以做到这一点onDraw(Canvas)
- 对于简单的情况(当它不是视图组并且不需要滚动条时),简单的
步骤4
后获得此信息,或者在dispatchDraw(画布)
完成后获得更正确的信息