简单的DragView(二)

本文介绍了一种在拖动View后使其平滑返回原位置的方法,利用Scroller类的computeScroll()方法实现循环调用,通过startScroll()设置平滑滚动的偏移量和持续时间,最终达到平滑复位的效果。

实现功能:拖动view之后返回到原位置(平滑返回而非瞬时移动)

分析:用到Scroller类的computeScroll()方法,它是Scroller类的核心方法,这里牵涉到它的循环调用;

1、重写computeScroll():

super.computeScroll();

if(mScroller.computeScrollOffset())

{

((View)getParent).scrollTo(mScroller.getCurrX(),mScroller.getCurrY());

invalidate();

}

最后一定要加上invalidate()来实现循环调用的目的,因为它的调用过程是这样的:

invalidate() -> draw() -> computeScroll()    懂我意思吧

 2、判断触摸事件:

View viewGroup = (View)getParent; 

Up: mScroller.startScroll(viewGroup.getScrollX(), viewGroup.getScrollY, -viewGroup.getScrollX(), -viewGroup.getScrollY(), 300);

invalidate(); //循环computeScroll()的起点

break;

设置的startScroll()的偏移量为其相反数,就平滑的滑回去了。

这里设置了duration参数为300, 可以忽略的, 测试发现好平滑呀hhh

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值