我有一个TextView
我注册了以下动画:
mScaleAnimation = new ScaleAnimation(1f, 1.2f, 1f, 1.2f,
mReferenceTextView.getWidth() / 2, mReferenceTextView
.getHeight() / 2);
mScaleAnimation.setRepeatCount(Animation.INFINITE);
mScaleAnimation.setRepeatMode(Animation.REVERSE);
mScaleAnimation.setDuration(500);
它工作正常,看起来非常酷:)
我唯一关心的问题如下:当我看到logcat时,它完全无法使用,因为只要动画正在运行,我就会一次又一次地重复这些日志:(
06-20 17:50:05.555: DEBUG/skia(14179): purging 213K from font cache [7 entries]
06-20 17:50:05.750: DEBUG/skia(14179): purging 196K from font cache [7 entries]
06-20 17:50:05.870: DEBUG/skia(14179): purging 202K from font cache [8 entries]
06-20 17:50:05.995: DEBUG/skia(14179): purging 190K from font cache [8 entries]
TextView
使用自定义字体/字体(采用otf格式)。
是什么原因导致字体缓存繁重?
答案 0 :(得分:1)
我相信你的缓存会被杀死,因为你正在生成大量的TypeFace对象。 我猜这是在ICS上发布的吗? 有bug持有TypeFaces并且没有正确释放它。 因此,当您制作动画时,它会不断为每个位置创建新对象,并且它们会被泄露并且永远不会被清除。
我发现有人建议使用HashMap创建TypeFace缓存。您可以查看此帖子了解更多详情。 Custom fonts and XML layouts (Android)
答案 1 :(得分:0)
如果您不断更改实际字体大小,Skia和HWUI都将不断重新光栅化并重新播放大小合适的新字形。内存使用量可以快速增长,性能急剧下降。如果你只是缩放画布,你不应该得到这个问题,但是你也不会得到质量。