美文网首页
Android onDraw不执行

Android onDraw不执行

作者: 最简单的实现 | 来源:发表于2017-02-28 00:05 被阅读0次

自定义控件中,invalidate后onDraw不执行怎么办,今天就遇到了这事。
还是学艺不精的问题。
首先不解释那么多为什么,能实现我们要做的事情就成。

解决办法

方法1:

在构造方法处添加一个方法:

setWillNotDraw(false);

方法2:

重写dispatchDraw(Canvas canvas)方法,把onDraw(Canvas canvas)里的逻辑迁移到dispatchDraw下。

解释

为什么会出现onDraw不执行具体还真不知道,为什么这么说。首先我在ProjectA写了一个自定义控件:

public class CircleViewByImage extends FrameLayout

手机上完美运行。
然后新建了一个ProjectB,把这个CircleViewByImage 复制粘贴过来,一运行就发现下面Log不打印了。

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    Log.e("tag", "onDraw: ");
}

这事足足整了40分钟,然后在这里找到了答案,更详细的解释也在里面。

相关文章

网友评论

      本文标题:Android onDraw不执行

      本文链接:https://www.haomeiwen.com/subject/bwwtgttx.html