android – View.invalidate()似乎没有调用View.onDraw()

前端之家收集整理的这篇文章主要介绍了android – View.invalidate()似乎没有调用View.onDraw()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个绘图库,有了它我有一个自定义视图.当需要进行任何更新时,库会调用视图的invalidate()方法.然后调用onDraw()方法,一切正常.

但是,当我将usesSdkVersion =“14”的属性添加到我的AndroidManifest.xml文件时,这将停止工作.不再是我的视图的onDraw()方法调用了.

更多信息:
似乎当我在我的应用程序中按下按钮时调用invalidate()时,View会按预期更新.此外,我的库中有一个动画正常工作.所以显然有时它工作正常.但大部分时间,都没有重新绘制.是否存在自定义视图可能导致操作系统在调用invalidate()后跳过重绘的状态?

解决方法

从android 3.0开始,当使用硬件加速时,视图的绘制被记录并存储在GPU中.

因此,当你有两个视图时:A在B之上,你调用B.invalidate,B.onDraw将被调用并记录到GPU,但是A.onDraw将不会被调用,因为它已经被记录了!

调用所有视图onDraw时,这与非硬件加速模式不同.

猜你在找的Android相关文章