2010-06-23 76 views
16

我在阅读关于setDrawingCacheEnabledgetDrawingCache,我想知道什么时候使用它或什么时候不好。Android - 绘图缓存 - 何时有用?

基本上在我的情况下,我有一个HorizontalScrollView其中有很多东西,所以它的卷轴左/右,大部分的东西是不可见的。

如果我对视图使用setDrawingCacheEnabled(true),它有帮助吗?或者这只是当我使用自定义视图,我打电话getDrawingCache()

HorizontalScrollView中有没有其他“缓存”方式?

回答

5

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

+1

链接已死亡。不幸的是,我找不到任何使用onInterceptTouchEvent方法的好例子。 – tomrozb 2013-03-01 21:18:22

+1

链接已死 – Gallal 2013-07-26 10:21:11

+1

https://github.com/android/platform_packages_apps_music/blob/master/src/com/android/music/TouchInterceptor.java – 2013-07-30 07:31:50

4

这对Marcel所说的屏幕截图非常有用。这也是非常有用的表现,因为这是它的创造。它会占用更多的内存,因为您首先将视图渲染成位图。

你所做的是,你setDrawingCacheEnabledtrue,呼吁getDrawingCache它返回一个位图并存储此位图。在onDraw中,如果缓存打开,您确实绘制了您获得的位图,否则绘制您获取的位图。滚动时这可以非常好。

+0

我试图将图像从网格的一个单元格拖放到另一个单元格。我可以使用这种机制吗?如果是,那么我应该更改我的代码?请帮帮我? – 2012-02-16 06:43:56