美文网首页
Android view位移滑动

Android view位移滑动

作者: 覆水无言 | 来源:发表于2021-01-20 14:11 被阅读0次

    Android view的位移滑动

    基础

    Android view的移动不管特效多么绚丽,都是view控件的基础移动实现的。

    方式:

    1. scrollTo/scrollby: view控件内容移动。
    2. 动画:给view实现移动效果。
    3. LayoutParams: 使view重新布局实现view移动。

    1: scrollBy/scrollTo

    1.1: 内容左边界

    1. View:对于单个view,内容左边界就是文字图片等的左边界。eg:botton可以很大但他的内容显示可能就一个单词,

      而内容左边界就是这个单词的左边起始位置。

    2. ViewGroup:以单个view的理解,ViewGroup的内容左边界就是它包裹的控件的左边界。

    1.2 scrollBy/scrollTo滑动

    view 控件内容的滑动,eg: ScrollView包裹的控件,Button上显示的文字,但控件自身的位置不会改变。

        // scrollBy scroolTo源码
        public void scrollBy(int x, int y) {
            scrollTo(mScrollX + x, mScrollY + y);
        }
    
       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();
                }
            }
        }
    

    这里mScrollx/mScrolly是view内容已经滑动的距离可由get方法获取,从源码可以看出.

    1. scrollBy是在现有基础上滑动x, y距离。
    2. scrollTo是滑动到x, y位置。

    方向

    上述两个方法都是对mScrollx/mScrolly进行操作的,

    1. mScrollx : 已view内容左边界为准,向左滑为正,向右滑为负。
    2. mScrolly: 已view内容上边界为准,向上滑为正,向下滑为负。

    即左上为正,右下为负。

    2. 动画

    使用动画操作的是view的translationX与translationY属性。可以使用传统动画或者属性动画。

     TranslateAnimation animation = new TranslateAnimation(0f, 0f, 0f, 150f);
     animation.setDuration(1500);
     view.startAnimation(animation);
    

    3. 布局参数LayoutParams

    RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)
    mTvLayoutParam.getLayoutParams();
    layoutParams.topMargin = layoutParams.topMargin + 50;
    mTvLayoutParam.requestLayout();
    

    直接代码改变view的布局参数从根本上改变view的位置,

    mTvTranslate.offsetTopAndBottom(50);
    

    这个方法根本上也是对LayoutParams的改变,只是在原有的LayoutParams上进行了加减。

    4. 源码

    MoveViewActivity

    相关文章

      网友评论

          本文标题:Android view位移滑动

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