美文网首页
3.2 View的滑动

3.2 View的滑动

作者: 贝贝ovo | 来源:发表于2019-04-01 15:36 被阅读0次

1.使用 scrollTo/scrollBy

scrollBy实际上也是调用了scrollTo方法。
scrollBy实现了基于当前位置的相对滑动,scrollTo则实现了基于所传参数的绝对滑动。
scrollTo和scrollBy只能改变View内容的位置而不能改变View在布局中的位置。


源码

当View左边缘在View内容的左边缘的右边时,mScrollX为正值,反之为负值;当View的上边缘在View内容上边缘的下边时,mScrollY为正值,反之为负值。换句话说,如果从左向右滑动,那么mScrollX为负值,反之为正值:如果从下往上滑动,那么mScrollY为负值,反之为正值。


2.使用动画

使用动画来移动View,主要是操作View的translationX和translationY属性,既可以用传统的View动画,也可以采用属性动画。

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true">
    <translate
        android:duration="1000"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:interpolator="@android:anim/linear_interpolator"
        android:toXDelta="100"
        android:toYDelta="100" />
</set>
 ObjectAnimator.ofFloat(targetView, "translationX", 0, 100).setDuration(100).start();

View动画是对View的影像操作,它并不能真正改变View的位置参数,包括宽高,动画后的状态保留必须将fillAfter属性设置为true。属性动画不存在这个问题

3.改变布局参数

即改变LayoutParams,比如一个按钮向右平移100px

        ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) mBtn.getLayoutParams();
        layoutParams.leftMargin += 100;
        mBtn.requestLayout();
        //或者  mBtn.setLayoutParams(layoutParams);

4.三种方式的对比总结

  • scrollT/scrollBy:操作简单,适合对View内容的滑动
  • 动画:操作简单,适用于实现复杂的动画效果,View动画适用于没有交互的View,属性动画没有明显缺点
  • 改变布局参数:稍复杂,适用于有交互的View

相关文章

网友评论

      本文标题:3.2 View的滑动

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