overscroller类的介绍

最近学到了overscroller 来做下笔记
参考文章 http://blog.csdn.net/chaoyue0071/article/details/44038641
overscroller 类是个辅助类,主要是计算当前view要移动某段距离的当前位置,可能这样说不理解,先上图,再解释

Animation.gif

我们移动到某个距离要返回时,如果此时要求view返回时,这个时候overscroller就用到了,他会自动计算当前的距离他会调用computeScroll 类,我们可以在这个里面设定view的位置,轻轻松松实现view的移动。

private void init() {
//初始化overscroller类
mScroller = new OverScroller(this.getContext(),new BounceInterpolator());
}

重写ontouchu方法

@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = event.getRawX();
lastY = event.getRawY();
Log.e("main","dd1d");
break;
case MotionEvent.ACTION_MOVE:
float disX = event.getRawX() - lastX;//得到移动的距离
float disY = event.getRawY() - lastY;
/offsetLeftAndRight((int) disX);
offsetTopAndBottom((int) disY);
/
this.layout(this.getLeft()+disX,this.getTop()+disY,this.getRight()+disX,this.getBottom()+disY);
lastX = event.getRawX();
lastY = event.getRawY();
Log.e("main","d2dd");
break;
case MotionEvent.ACTION_UP://调用mscroller的start方法 前两个参数,传入当前的左边,后两个参数传入x y移动的距离
mScroller.startScroll((int) getX(), (int) getY(), -(int) (getX() - startX), -(int) (getY() - startY));
invalidate();
Log.e("main","dd3d");
break;
}
return true;
}

代码 :https://github.com/meijingkang/canmovertextview.git

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容