Android Canvas里面每行listview都没有滞后

时间:2014-06-01 12:02:55

标签: android listview canvas

我意识到这是一个高度自定义的实现,但我将一个应用程序从IOS移植到Android,在列表视图中包含这些照片,用户需要能够以一个流畅的动作流畅地消除。我唯一可以在github上找到的就是这个:https://github.com/winsontan520/Android-WScratchView/tree/branch_image_overlay

但是,这使用了一个表面视图,当在我的listview中实现时,它极其滞后。我做了一些研究,寻找一个类似于Photoshop笔记本的东西,并使用画布来实现类似于单个绘图区域的东西,但我不太确定我想要做什么在Android中是否可行花费第二天或第二天学习画布将是一项值得投资或者如果我咆哮错误的树。这是实现目标的方法吗?

1 个答案:

答案 0 :(得分:1)

SurfaceView实际上是一个Canvas实现,它具有一些原生的改进,如duble buffering,vsync等。但是在ListView中使用它是一种矫枉过正的行为。

我说用自定义视图抓住机会。只需覆盖onDraw(Canvas canvas)并绘制您想要的任何内容。如果你有一些基本的图形知识,学习画布很容易。

作为另一种实现方式,如果您在滚动时不需要ListView互动中的所有视图,则可以在ListView中使用静态图片,当用户触摸其中一个时用SurfaceView替换静态图像并继续。这样您只需要一个SurfaceView

在实现ListView时,您是否也使用了ViewHolder模式(http://developer.android.com/training/improving-layouts/smooth-scrolling.html)?可能有助于提高性能,但我不确定它是否可以在您的情况下实现。