min*_*ini 18 android view android-canvas
我是Android开发的新手,我正在探索View.我遇到已知两种方法onDraw(Canvas c)和draw(Canvas c).
请解释一下这两种方法的区别和用法?使用图像更新画布时,哪种方法可以提供更好的性能(FPS)?
Ali*_*ran 25
他们之间有区别
所述的onDraw(帆布c)中是一个覆盖方法和视图被呈现时自动调用.在这里,您可以进行额外的绘制,例如制作圆圈,线条或任何您想要的图形.
的拉伸(帆布c)中用于手动呈现该视图(及其所有子),以给定的画布.在调用此函数之前,视图必须已完成完整布局.实现视图时,请实现onDraw(android.graphics.Canvas)而不是重写此方法.如果确实需要覆盖此方法,请调用超类版本.
或者简单来说,绘制(Canvas c)只是一个在渲染视图时不会自动调用的函数.用户需要提供将在其上呈现此视图的画布,并且用户还必须在调用此函数之前在画布上执行所有绘制.
Kar*_*shy 13
就好像有人还在寻找像我一样的答案而没有找到答案.
当需要重新绘制视图并且draw()方法然后调用onDraw()来绘制视图的内容时,框架将调用draw()方法.
void draw(Canvas canvas)
{
..... do default stuff (background, layers)
onDraw(canvas)
..... do other stuff ( scroll bars, fading edges, children)
}
Run Code Online (Sandbox Code Playgroud)
由于笨拙的API文档,对此存在误解。
简短的答案是对View draw(Canvas)的入站调用,以执行一些重要的操作,而在draw(Canvas)实现过程中的某个地方,它也会触发onDraw(Canvas)回调。
draw(Canvas)实现View用于版面设计的自定义时,请勿覆盖。draw()将为您节省每个周期的一些不必要的调用。更长的答案
draw(Canvas)在其绘制周期中使用。这是我可以在查看代码中找到的:
onDraw()来到这里有用的提示
您可以将任何视图渲染到您创建的屏幕外位图中,然后在任何地方使用此位图:
Canvas c = new Canvas();
c.setBitmap(myOffscreenBitmap);
myView.draw(c);
Run Code Online (Sandbox Code Playgroud)
onDraw(Canvas)也可以解决问题。| 归档时间: |
|
| 查看次数: |
10488 次 |
| 最近记录: |