我正在制作文档阅读器应用程序,我希望用户能够让应用程序自动滚动文档而不是手动滚动。请任何人都可以给我一些关于如何垂直制作ScrollView“Auto-Scroll”的想法吗?电影结尾处的类似点数。我成立了一个TimerTask这个下面,但我的问题是:Android +如何将垂直“自动滚动”功能添加到ScrollView或TextView
如何获得增量值送入的TimerTask即新位置的滚动条应该去每个TimerTask的运行时间。
有没有更好的方法来实现这种自动滚动功能?
我的代码如下,我实现了自动滚动,但滚动甚至没有...(对Java和Android..smile全新)...谢谢!!!
Timer scrollTimer = new Timer();
Handler handler = new Handler();
ScrollView scrollView = (ScrollView) findViewById(R.id.hse);
int scrollSpeed = 5; // this is set by the user in preferences
TimerTask scrollerSchedule = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
//Here I want to increment the scrollbar's vertical position by 10
//scrollView.smoothScrollBy(0, scrollView.getScrollY() + 10);
new moveScrollView().execute();
}
});
}
};
scrollTimer.schedule(scrollerSchedule, 0, scrollSpeed * 100);
}
private class moveScrollView extends AsyncTask<Void, Void, Void> {
protected void onProgressUpdate(Void... progress) {
// show the user some sort of progress indicator
// like how many minutes before scroll is completed
}
protected Void doInBackground(Void... params) {
// TODO
int scrollPos = (int) (scrollView.getScrollY() + 10.0);
scrollView.smoothScrollTo(0, scrollPos);
return null;
}
}
变化:像@Kurtis建议,我加入了的AsyncTask来进行滚动,然后使用一个TimerTask +处理器做重复。现在,当运行在AsynTask滚动码
int scrollPos = (int) (scrollView.getScrollY() + 10.0);
scrollView.smoothScrollTo(0, scrollPos);
,我得到一个错误,但是当我直视着我的Runnable运行代码它按预期工作。我仍然关心效率,真的想要使用AsynTask。任何提示修复我的AsyncTask代码?
顺便说一句:这是我的观察(对于像我这样的新手)。以前我用
scrollView.smoothScrollBy(0, scrollView.getScrollY() + 10);
和滚动开始跳跃不均匀,有点递增滚动值+5一样,+10 +15 + ...,而不是一个甚至重复像+5,+ 5,+ 5 ....我发现如果我想计算像scrollView.getScrollY()+ 10这样的增量值,那么我应该使用smoothScrollTo()而不是smoothScrollBy()。
scrollView.smoothScrollTo(0, scrollView.getScrollY() + 10);
Ok Kurtis,请问你能给我一些代码指导吗?我对Java和Android编程完全陌生......大约5天前......大声笑。 – Tochie
好的,只是看到你的链接。我会查找他们并回来。谢谢! – Tochie
我给你AsynTask的文档链接有一堆关于如何使用它们的东西。你试过了吗? –