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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...