我一直在研究一个ListView
的想法,它会自动滚动而不需要用户交互,而且使用Android API非常可行,例如 smoothScrollToPositionFromTop
我已经实现ListView BaseAdapter
,它会永远(几乎)加载项目,以便不停止自我重复ListView
。
我想在这里实现的是让我的ListView
以一定的速度(慢速)永久滚动,以便在向下滚动时使项目清晰可读,我不确定ListView
是否是我的最佳选择这里。
是我想要做的事情的片段。结果很好但不够流畅,我觉得ListView会闪烁。
我需要提高平滑度,效率和控制速度
new Thread(new Runnable() {
@Override
public void run() {
int listViewSize = mListView.getAdapter().getCount();
for (int index = 0; index < listViewSize ; index++) {
mListView.smoothScrollToPositionFromTop(mListViewA.getLastVisiblePosition() + 100, 0, 6000);
try {
// it helps scrolling to stay smooth as possible (by experiment)
Thread.sleep(60);
} catch (InterruptedException e) {
}
}
}
}).start();
答案 0 :(得分:15)
我建议,你的适配器以有效的方式实现。 所以这段代码只是滚动列表视图
您需要尝试其他变量值
final long totalScrollTime = Long.MAX_VALUE; //total scroll time. I think that 300 000 000 years is close enouth to infinity. if not enought you can restart timer in onFinish()
final int scrollPeriod = 20; // every 20 ms scoll will happened. smaller values for smoother
final int heightToScroll = 20; // will be scrolled to 20 px every time. smaller values for smoother scrolling
listView.post(new Runnable() {
@Override
public void run() {
new CountDownTimer(totalScrollTime, scrollPeriod ) {
public void onTick(long millisUntilFinished) {
listView.scrollBy(0, heightToScroll);
}
public void onFinish() {
//you can add code for restarting timer here
}
}.start();
}
});
答案 1 :(得分:-1)
这里有一些指示:Simulate onFling() programmatically instead of detecting it (Android)
和Programmatically Fling ListView Android
在你的情况下很难弄清楚你所说的足够顺畅。通常,平滑度问题与适配器的getView方法中的单元格布局或视图创建/回收中的列表视图和故障的非最佳使用有关。
你use a placeholder吗? 需要考虑的重要事项还有Drawables usage。
我从来没有达到你想要的,但想到一个简单的想法是: