子View执行invalidate之后,draw-ondraw-dispatchdraw。
父View只执行nvalidateChildInParent,而draw和dispatchdraw都没有执行?
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
已结题
子View执行invalidate为什么父View的draw和dispatchDraw都不执行?
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫点击复制链接分享
- 邀请回答
- 编辑 收藏 删除
- 收藏 举报
3条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
devmiao 2018-06-13 15:49关注本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报
微信扫一扫点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容
报告相同问题?
提交
- 2024-06-23 00:21字节卷动的博客 首先我们分析一下的执行流程,源码是如何从invalidate调用到onDraw()的。由于这部分代码相对较为复杂,那么请大家参考下面的时序图。
- 2025-09-05 11:20_小马快跑_的博客 绝大多数View不需要绘制边缘渐变(fading edges),因此它们会走快速路径:跳过步骤2和步骤5中昂贵的图层保存与恢复操作(saveLayer和),从而提升绘制效率。开发者应避免重写方法。如果需要自定义绘制,请重写。...
- 2020-08-31 09:514. **dispatchDraw()**:对子View进行绘制,通常由 ViewGroup 调用,遍历并绘制所有的子View。 5. **postInvalidate() / invalidate()**:标记View需要重绘,触发绘制流程。 6. **硬件加速**:如果开启硬件加速,...
- 2021-05-22 15:28super码王的博客 android代码一直在优化,我看了几个版本的源码,目前,我用的是API30的源码,再去看ViewGroup为什么不走onDraw()的时候,已经不是一句if (!dirtyOpaque) 就能决定是否执行onDraw()的事了。 原因详解 在API27中,...
- 2022-03-03 19:06tinyvampirepudge的博客 这个方法跟 requestLayout 的区别在于,它不一定会触发 View 的 measure 和 layout 的操作,多数情况下只会执行 draw 操作。 我们从View#invalidate开始,追一下调用流程。 1、View#invalidate:让当前的整个View...
- 2022-01-19 18:42m0_66264856的博客 ViewGroup.drawChild()调用此方法,使每个子视图都绘制自己。这是视图根据图层类型专门处理渲染行为的地方,硬件加速。 是否走draw()方法由两个标志决定 mPrivateFlags & PFLAG_SKIP_DRAW 片段二 :...
- 2015-08-09 22:45shineflowers的博客 结合View.java的源码,在draw方法中: public void draw(Canvas canvas) { /*View的绘制过程分为下面几步:1. Draw the background 绘制背景2. If necessary, save the canvas' layers to prepare for fading 如有...
- 2017-08-24 14:52Sundy_Xu的博客 自定义View执行invalidate()方法,为什么有时候不会回调onDraw()自定义一个view时,重写onDraw。调用view.invalidate(),会触发onDraw和computeScroll()。前提是该view被附加在当前窗口. view.postInvalidate(); //是...
- 2016-02-27 17:24无名888的博客 本文章转载与http://blog.csdn.net/jjwwmlp456/article/details/43986141 方便大家更深入理解draw方法
- 2015-02-28 16:48匆忙拥挤repeat的博客 View中: public void draw(Canvas canvas) { /* 1. Draw the background 绘制背景 2. If necessary, save the canvas' layers to prepare for fading 如有必要,颜色渐变淡之前保存画布层(即锁定...
- 2019-03-11 09:53Mars-xq的博客 View类中的draw方法: public void draw(Canvas canvas) { final int privateFlags = mPrivateFlags; final boolean dirtyOpaque = (privateFlags & PFLAG_DIRTY_MASK) == PFLAG_DIRTY_OPAQUE &&...
- 2017-05-28 12:30Trilen的博客 一般Ui控件使用来简单开发时,并没有注意到系统如何刷新,而当我们自定义View或开发复杂的view时,就需要主动调用Invalidate或者postInvalidate等来通知系统刷新绘制UI,刷新视图。那接下来一个个来剖这两个Api的...
- 2021-05-26 14:17斤斤计较且腹黑的博客 这次想来梳理一下 View 动画也就是补间动画(ScaleAnimation, AlphaAnimation, TranslationAnimation...)这些动画运行的流程解析。内容并不会去分析动画的呈现原理是什么,诸如 Matrix 这类的原理是什么,因为我也还...
- 2024-06-05 00:43陪你度过青葱岁月的博客 我们知道 Android 视图的绘制流程分为:Measure,Layout 和 Draw,之前我们已经分析了:Measure 和 Layout,他们最主要的任务是:确定 View/ViewGroup 可绘制的矩形区域。接下来我们分析 Draw 是如何在这给定的区域...
- 2021-05-28 02:37丁晓斌的博客 一般引起invalidate()操作的函数如下:1、setVisibility()方法 :当View的可视状态在INVISIBLE / VISIBLE 转换为 GONE状态时,会间接调用requestLayout() 和invalidate方法。同时,由于整个个...
- 2022-06-09 07:06G11176593的博客 Android中View绘制流程以及invalidate()、requestLayout()等相关方法分析等相关方法分析整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的执行过程可简单概况为根据之前设置的...
- 2025-07-04 21:17你过来啊你的博客 ViewRootImpl | (1) 触发:首次显示、invalidate()、requestLayout()、窗口大小改变| | (2) 发起:performTraversals()| DecorView | (顶级ViewGroup)| (包含系统UI & 用户布局) || 递归遍历v| (容器: e.g., ...
- 2024-06-21 22:37字节卷动的博客 在 Android 开发中,自定义View和ViewGroup。
- 没有解决我的问题, 去提问