scrollview的惯性滑动

raphael55 2011-06-27 07:19:17
由于在scrollview滑到顶部或者底部的时候
需要做某些操作
但是由于scrollview的惯性滑动
会重复发生多次事件
故 需要屏蔽该惯性滑动效果

先前使用的方法是
在scrollview滑到顶部或者底部时
加入ontouchevent,先模拟次touch down
再模拟次touch up 这样惯性滑动就没有了
用摩托2.2 索爱2.1 三星2.2上测试都没问题

但是在三星nexous one 2.3上测试就挂了

在模拟touch up事件时,ontouchevent内部报空指针错误

求解~~或者有什么新思路可以解决惯性滑动问题
...全文
1282 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
念茜 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 raphael55 的回复:]

引用 7 楼 yiyaaixuexi 的回复:
引用 6 楼 raphael55 的回复:
引用 5 楼 yiyaaixuexi 的回复:
不知道这样可以不可以:
通过scrollview的滑动肯定可以得到你所通过scrollview控制的一个value值,这个值在理想状态(忽略惯性问题的情况)下,处在一个有限区间[a,b]。滑到顶部时,忽略一切value>b的value值,滑倒底部时,……
[/Quote]

GOOGLE也意识到scrollview有很多需要改进的地方,即使是先把优化方案给三星,也是情理之中.
2.3通过了那基本圆满了
raphael55 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yiyaaixuexi 的回复:]
引用 6 楼 raphael55 的回复:
引用 5 楼 yiyaaixuexi 的回复:
不知道这样可以不可以:
通过scrollview的滑动肯定可以得到你所通过scrollview控制的一个value值,这个值在理想状态(忽略惯性问题的情况)下,处在一个有限区间[a,b]。滑到顶部时,忽略一切value>b的value值,滑倒底部时,忽略一切value<a的value值,从而避免错误的……
[/Quote]

在scrollview滑到顶部或者底部时
加入ontouchevent,先模拟次touch down
再模拟次touch up 这样惯性滑动就没有了
用这个方法就是nexous one直接crash了,报的是模拟touch up的时候里面有空指针,看源代码没找出原因,而且每次都是第一次触发正常通过 第二次就报空指针

现在用fling(0)正常通过。。几个手机都测试过,版本也有1.6 2.1 2.2 2.3
查看了下源代码2.3和之前版本的scrollview改动还是很大的
以google提供的代码看fling()应该没问题,就是不知道各个厂商有没再在里面加什么了
raphael55 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yiyaaixuexi 的回复:]
不知道这样可以不可以:
通过scrollview的滑动肯定可以得到你所通过scrollview控制的一个value值,这个值在理想状态(忽略惯性问题的情况)下,处在一个有限区间[a,b]。滑到顶部时,忽略一切value>b的value值,滑倒底部时,忽略一切value<a的value值,从而避免错误的事件响应。
[/Quote]

这个值是指scroll的高度么
高度肯定是在0-max之间。。
就是在0(顶部),max(底部)时会触发事件
在onScrollChanged中判断高度来触发的
由于惯性滑动,导致连续触发
现在在触发事件时调用了scrollview的fling(0)
效果是达到了。不过不晓得是不是在所有机器上都有效
念茜 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 raphael55 的回复:]
引用 5 楼 yiyaaixuexi 的回复:
不知道这样可以不可以:
通过scrollview的滑动肯定可以得到你所通过scrollview控制的一个value值,这个值在理想状态(忽略惯性问题的情况)下,处在一个有限区间[a,b]。滑到顶部时,忽略一切value>b的value值,滑倒底部时,忽略一切value<a的value值,从而避免错误的事件响应。


这个值是指scroll的……
[/Quote]

如果nexous one 2.3的系统没有动过什么手脚的话,应该可以吧?有测试下吗
念茜 2011-06-29
  • 打赏
  • 举报
回复
不知道这样可以不可以:
通过scrollview的滑动肯定可以得到你所通过scrollview控制的一个value值,这个值在理想状态(忽略惯性问题的情况)下,处在一个有限区间[a,b]。滑到顶部时,忽略一切value>b的value值,滑倒底部时,忽略一切value<a的value值,从而避免错误的事件响应。
javasoldiers 2011-06-29
  • 打赏
  • 举报
回复
是三星手机的问题吧
raphael55 2011-06-29
  • 打赏
  • 举报
回复
help~
raphael55 2011-06-28
  • 打赏
  • 举报
回复
做的软件是要求1.6以上机器都能用。。
所以即使只有一款机型有crash现象
都要改代码
pby_bob 2011-06-28
  • 打赏
  • 举报
回复
你说在摩托2.2 索爱2.1 三星2.2没问题,而换了手机型号就不行了 是不是手机问题

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧