安卓 - 绘制缓存 - 何时有用?

17

我正在阅读有关setDrawingCacheEnabledgetDrawingCache的内容,想知道什么时候使用它是好的,什么时候不好。

基本上,在我的情况下,我有一个HorizontalScrollView,里面有很多东西,所以它会向左/右滚动,大部分东西都看不见。

如果我在视图上使用setDrawingCacheEnabled(true),有用吗? 或者只有在使用自定义视图并调用 getDrawingCache()时才有用?

HorizontalScrollView中还有其他可以使用的“缓存”方式吗?

2个回答

5

TouchInterceptor.java - 这个类是负责在默认音乐播放器中重新排序播放列表的。当你开始拖动当前视图时,它使用setDrawingCacheEnabled。基本上,它从ListView项创建一个位图并将其拖动。仔细查看onInterceptTouchEvent方法。


1
链接已失效。不幸的是,我找不到任何使用onInterceptTouchEvent方法的好例子。 - tomrozb
1
https://github.com/android/platform_packages_apps_music/blob/master/src/com/android/music/TouchInterceptor.java - Mojo Risin

4

如Marcel所说,它对于截图绝对有用。它在性能方面也非常有用,因为它是为此而创建的。它确实使用了更多的内存,因为你首先将视图渲染成位图。

你需要做的是,将setDrawingCacheEnabled设置为true,调用getDrawingCache返回一个位图并存储这个位图。在onDraw中,如果缓存开启,则绘制你得到的位图,否则绘制视图。这在滚动时非常好用。


我正在尝试将图像从网格的一个单元格拖放到另一个单元格。我可以使用这种机制吗?如果可以,那么我应该在我的代码中做出什么改变?请帮帮我。 - Chandra Sekhar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接