Cpt*_*rkt 29 graphics android ondraw
我将一个Log.d()调用放入我的扩展视图的onDraw()中,这样我就可以看到它被调用的频率和时间.它在实例化视图时被调用,这并不奇怪.但后来我注意到,它会在onTouchEvent()处理的每个tap上被调用,即使我的代码没有做与图形远程相关的任何事情.但是,在Views 的文档中,我似乎无法找到关于何时实际调用onDraw()的任何内容.我并不是真的关心我的特定项目(这不会对我造成问题),我只想知道某个地方是否有列表或显示View的操作顺序,特别是导致onDraw()被调用.
Rag*_*ood 55
AFAIK,View的onDraw()在以下情况下被调用:
无论何时需要,您或系统都可以调用Invalidate.例如,很多视图会改变它们在onTouch上的外观,例如获取轮廓和光标的EditText,或处于按下状态的按钮.因此,视图会在触摸时重新绘制.
我同意如果有一份详细说明Views工作的文档会很好,如果有人知道在哪里找到它,请告诉我们.
如果为View设置了一个可绘制的背景,那么View会在回调它的onDraw()方法之前为你绘制它.
当视图附加到窗口时,将调用onAttachedToWindow().此时它有一个Surface并将开始绘制.请注意,保证在onDraw(android.graphics.Canvas)之前调用此函数,但是可以在第一次onDraw之前的任何时间调用它 - 包括onMeasure(int,int)之前或之后.
invalidate()将dirty定义的区域标记为需要绘制.如果视图可见,将在某个时间点调用onDraw(android.graphics.Canvas).
| 归档时间: |
|
| 查看次数: |
37155 次 |
| 最近记录: |