android view 滑动

1、概述

view 的滑动可以通过 以下几种方式实现
a) LayoutParams : 移动view本身
b) 动画:移动view的影像
c) scrollTo scrollBy:移动view的内容
d) Scroller 实现 (实际同c)

2、view 的 scrollTo / scrollBy

只能移动view的内容,并不能移动view 本身。一般用在viewGroup中使用移动
scrollTo(int x, int y); // 绝对滑动
scrollBy(intx, int y); // 基于当前位置的相对滑动
源码中到处可以看到mScrollx mScrollY

  /** * Move the scrolled position of your view. This will cause a call to * {@link #onScrollChanged(int, int, int, int)} and the view will be * invalidated. * @param x the amount of pixels to scroll by horizontally * @param y the amount of pixels to scroll by vertically */
    public void scrollBy(int x, int y) {
        scrollTo(mScrollX + x, mScrollY + y);
    }

mScrollX : view 左边缘 与 view内容左边缘水平距离
mScrollY:view上边缘 与 view 内容上边缘的垂直距离

    /** * The offset, in pixels, by which the content of this view is scrolled * horizontally. * {@hide} */
    protected int mScrollX;

    /** * The offset, in pixels, by which the content of this view is scrolled * vertically. * {@hide} */
    protected int mScrollY;

3、Scroller

Scroller 底层调用scrollTo / scrollBy 也是属于移动内容不移动本身

4、动画移动

动画移动就是translation了
a) view动画animation是有问题的,view 动画动的是影像,真身不动。即使设置了停留在最后一帧不会归位回去了,屏幕绘制影像到想要的地方了。但是view的点击事件还是在真身上。

b) view 属性动画就可以了,不过在api11以下不存在属性动画,用了nineoldandroids 的兼容包底层调用的是view动画,该问题就还是存在,注意下。

c) 对于纯粹的展示问题是ok

你可能感兴趣的:(Android-移动,view-移动)