最近学到了overscroller 来做下笔记
参考文章 http://blog.csdn.net/chaoyue0071/article/details/44038641
overscroller 类是个辅助类,主要是计算当前view要移动某段距离的当前位置,可能这样说不理解,先上图,再解释
我们移动到某个距离要返回时,如果此时要求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;
}
网友评论