首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >滚动视图的速度限制

滚动视图的速度限制
EN

Stack Overflow用户
提问于 2012-04-30 23:18:25
回答 4查看 10.9K关注 0票数 3

我的应用程序滚动非常快!如何在我的android应用程序中限制滚动视图的滚动速度?滚动的速度可以非常快,以这种速度滚动是没有意义的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-31 06:02:07

这个帖子已经很旧了,但我会用一个部分的解决方案来回复:限制抛掷速度。请随时发表评论,这样我就可以改进我的解决方案。

如开发人员培训指南中所述:

翻转是当用户快速拖动并抬起手指时发生的滚动类型。

这就是我需要速度限制的地方。因此,在自定义ScrollView (无论是水平还是垂直)中,覆盖fling方法,如下所示。

代码语言:javascript
复制
@Override
public void fling(int velocityY) {
    int topVelocityY = (int) ((Math.min(Math.abs(velocityY), MAX_SCROLL_SPEED) ) * Math.signum(velocityY));
    super.fling(topVelocityY);
}

我发现velocityY (在水平滚动视图中应该是velocityX)可能在-16000到16000之间。否定只意味着回滚。我还在测试这个值,而且我只在一台设备上测试过。不确定在旧设备/API版本中是否相同。我稍后会回来编辑这篇文章。

代码语言:javascript
复制
(int) ((Math.min(Math.abs(velocityY), MAX_SCROLL_SPEED) ) * Math.signum(velocityY));

我在那里做的是获得常量MAX_SCROLL_SPEED和原始velocityY之间的最小值,然后获得原始velocityY的符号。我们需要这个标志来回滚。

最后,发回修改后的velocityY。

这是一个部分解决方案,因为如果用户继续按滚动视图,速度不会改变。

再说一次,请随意改进我的答案,我还在学习。

票数 12
EN

Stack Overflow用户

发布于 2014-12-18 16:48:47

代码语言:javascript
复制
 ObjectAnimator anim = ObjectAnimator.ofInt(mScrollView, "scrollY", mScrollView.getBottom());                               
 anim.setDuration(9000);                     
 anim.start();
票数 3
EN

Stack Overflow用户

发布于 2012-04-30 23:41:53

我认为使用计时器可以限制滚动的速度。请查看此链接Android: HorizontalScrollView smoothScroll animation time

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10386096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档