资讯专栏INFORMATION COLUMN

View的滑动

Invoker / 2670人阅读

摘要:一由此看出,是在的基础上,是针对初始位置,是针对当前位置的初始位置的位置是再次调用,的位置仍然是是的初始位置的位置是再次调用,的位置仍然是是是滑动的计时工具类,仍需依靠调用实现的移动定义了一个计时器,在指定时间内,由到由到每次调用,是否在指

一.scrollTo,scrollBy

    public void scrollTo(int x, int y) {
        if (mScrollX != x || mScrollY != y) {
            int oldX = mScrollX;
            int oldY = mScrollY;
            mScrollX = x;
            mScrollY = y;
            invalidateParentCaches();
            onScrollChanged(mScrollX, mScrollY, oldX, oldY);
            if (!awakenScrollBars()) {
                postInvalidateOnAnimation();
            }
        }
    }
    public void scrollBy(int x, int y) {
        scrollTo(mScrollX + x, mScrollY + y);
    }

由此看出,scrollBy是在scrollTo的基础上, scrollTo是针对初始位置,scrollBy是针对当前位置
View的初始位置(0,0), scrllTo(100,100), View的位置是(100,100),再次调用scrllTo(100,100), View的位置仍然是是(100,100)
View的初始位置(0,0), scrllBy(100,100), View的位置是(100,100),再次调用scrllBy(100,100), View的位置仍然是是(200,200)

2.Scroller

startScroll(startX, startY, dx, dy, duration)

computeScrollOffset

View.computeScroll()

Scroller是滑动的计时工具类,仍需依靠调用scrollTo实现View的移动
startScroll定义了一个计时器,在指定时间内,x由startX到dx,y由startY到dy;
computeScrollOffset() 每次调用,是否在指定时间内,如在,根据时间设置Scorller.mCurrX,mCurrY;
computeScroll是View的空方法,在draw中调用,也就是会被不停的调用,所以重写computeScroll,调用computeScrollOffset,获取mCurrX,mCurrY,设置scrollTo,完成移动;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70774.html

相关文章

  • 08.Android之View事件问题

    摘要:内部是调用效果是移动的内容,因此需要在的父控件中调用。和的情况相似,手机屏幕向下移动,为正值手机屏幕向上移动,为负值。 目录介绍 8.0.0.1 简述Android的事件分发机制?dispatchTouchEvent方法的作用是什么?说下View和ViewGroup分发事件? 8.0.0.2 onInterceptTouchEvent方法作用是什么?onTouchEvent的方法的作...

    lavnFan 评论0 收藏0
  • CoordinatorLayout滑动抖动问题

    摘要:滑动抖动问题分析向上滚动无法被外部中断和子的联动时通过实现的,使用的继承了。当产生的向上的没有结束时,又送来向下的,抖动就产生了。反射获取私有的属性,考虑以后变量名修改的问题及一下版本可能是及以上版本然后在拦截事件里处理逻辑。 目录介绍 01.CoordinatorLayout滑动抖动问题描述 02.滑动抖动问题分析 03.自定义AppBarLayout.Behavior说明 04....

    atinosun 评论0 收藏0

发表评论

0条评论

Invoker

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<