【发布时间】:2011-09-29 16:18:07
【问题描述】:
我有一个ListView,我正在打电话给smoothScrollBy()。 95% 的时间,smoothScrollTo() 的行为符合预期。然而,有时它并没有出现在预期的位置!我已经验证我给它的值是一样的。我注意到当出现错误时平滑滚动不是那么平滑,但是我的应用程序正在执行的其他任务没有我可以控制的。
我不太确定后台发生了什么,但可能的罪魁祸首是垃圾收集。
在这种情况下,95% 的准确率还不够好。我将不得不实施某种更正机制,以确保ListView 在这些情况下位于正确的位置。
除了简单地调用view.smoothScrollBy(distance, time);之外,还有更好的方法来使用smoothScrollBy()吗?
【问题讨论】:
-
你有没有找到一个很好的解决方案?我现在处于完全相同的位置,我只需要对
smoothScrollBy()有 100% 的准确度,但它的实际操作非常不一致。 -
是的,我最终放弃了 ListView 以使用 ScrollView 获得对位置的更多控制,而只是向其中添加子视图。在我弄清楚这一点之前,我正在使用一种更正机制,以确保它滚动到正确的位置,如果没有,则启动另一个滚动。非常不精确,不适合专业应用:(
-
非常感谢,Styler。今天我尝试实现一个校正机制,它基本上以迭代方式应用多个滚动,从
OnScrollListener()调用连续滚动(通过Handler)。我很惊讶地说最终的结果非常好。我所做的是使大部分滚动发生得非常快,但最后 500 像素的最终滚动很慢(400 毫秒)。这使得整个卷轴看起来非常流畅和漂亮,就像一个单一的非线性卷轴。我得找点时间整理一个例子,然后在这里贴出来。 -
那将是一个很好的替代答案..干得好:)
-
使用此功能developer.android.com/reference/android/view/… 发布操作。不要只在主线程上运行它。