美文网首页
overscroller类的介绍

overscroller类的介绍

作者: 菜鸟程序员_ | 来源:发表于2016-07-29 11:08 被阅读159次

    最近学到了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

    相关文章

      网友评论

          本文标题:overscroller类的介绍

          本文链接:https://www.haomeiwen.com/subject/whkzjttx.html