Android画布位于listview的每一行内部,无延迟

Android画布位于listview的每一行内部,无延迟,android,listview,canvas,Android,Listview,Canvas,我意识到这是一个高度定制的实现,但我正在将一个应用程序从IOS移植到Android,它将这些照片放在一个列表视图中,用户需要能够在一个流畅的运动中流畅地挥动。在github上,我能找到的唯一与此相近的东西是: 但是,这使用了surfaceview,在我的listview中实现时,它非常滞后。我做了更多的研究,在photoshop橡皮擦的线条上寻找一些东西,发现一些东西使用画布来完成类似于单个绘图区域的东西,但我不太确定我想在Android上做的事情是否可行,花一两天时间学习画布是否值得投资,或者

我意识到这是一个高度定制的实现,但我正在将一个应用程序从IOS移植到Android,它将这些照片放在一个列表视图中,用户需要能够在一个流畅的运动中流畅地挥动。在github上,我能找到的唯一与此相近的东西是:


但是,这使用了surfaceview,在我的listview中实现时,它非常滞后。我做了更多的研究,在photoshop橡皮擦的线条上寻找一些东西,发现一些东西使用画布来完成类似于单个绘图区域的东西,但我不太确定我想在Android上做的事情是否可行,花一两天时间学习画布是否值得投资,或者我是不是找错了方向。这就是实现我的目标的方法吗?

SurfaceView
实际上是一个
Canvas
实现,它有一些本机的改进,比如duble buffering、vsync等等。但是在
列表视图中使用它是一种过度使用

我建议你试试自定义视图。只需覆盖onDraw(Canvas画布)
并绘制您想要的任何内容。如果你有一些基本的图形知识,学习画布是相当容易的

作为另一种实现思想,如果滚动时不需要在
列表视图
中插入所有视图,则可以在
列表视图
中使用静态图像,当用户触摸其中一个图像时,用
表面视图
替换静态图像,然后继续。这样,您只需要一个
SurfaceView


在实现ListView时,您是否也使用了ViewHolder模式()?可能有助于提高性能,但我不确定它是否可以在您的情况下实现

即使在一个活动中,只有一个表面视图作为listview的标题,它也非常滞后,这让我有点害怕。问题可能是你在表面视图中做了什么。你能在没有ListView的情况下单独尝试SurfaceView并检查性能吗?我想我会尝试将它放入视差ListView库的顶部,这样ListView涉及的滚动特性不会影响它,尽管我仍然希望并且在不久的将来需要提出一个canvas/surfaceview解决方案,该解决方案在listview中流畅地工作,对性能和列表滚动的流畅性有巨大的影响