美文网首页
View弹性滑动

View弹性滑动

作者: Ryan_Hoo | 来源:发表于2018-07-14 16:38 被阅读0次

弹性滑动的思想:将一次大的滑动分成若干次小的滑动并在一个时间段内完成

1.1、使用Scroller

Scroller的使用方法:

Scroller   scroller = new  Scroller(mContext);

//缓慢滚动到指定位置

private void smoothScrollTo(int  destX ,int destY){

         int  scrollX =   getScrollX(); //View的内容X轴已经滑动的距离

         int  deltaX = destX - scrollX ;   //View的内容要滑动的距离

         scroller.startScroll(scrollX , 0 ,deltaX , 0 ,1000);

          invalidate() ;

}

我的理解   这里的destX ,destY都是通过getX()和getY()获取的是相对于View本身的坐标。每次滑动后,坐标轴(0,0)位置相对于View本身的位置就会发生改变。实际上就是ScrollTo时参数的计算方法。如下图

偏移点

@override

public  void computeScroll(){

         if(mScroller.computeScrollOffset()){

               scrollTo(scroller.getCurrX(),scroller.getCurrY());

               postInvalidate();

         }

}

Scroller如何让View弹性滑动的?startScroll()——>invalidate()——>导致View重绘(1)——>调用computeScroll——>调用scrollTo()——>调用 postInvalidate() ——>重复(1)和之后的过程。

mScroller.computeScrollOffset()方法会根据时间流逝来计算当前的scrollX和scrollY的值,返回true表示滑动还未结束。

1.2、通过动画

动画本身就是一种渐近的过程,因此通过它来实现的滑动天然就具有弹性效果。

利用动画的延时特性,模仿Scroller来实现View的弹性滑动。

final  int  startX=0 ; final int delatX = 100 ;

ValueAnimator   animator = ValueAnimator.ofInt(0,1).setDuration(1000);

animatar.addUpdateListener(new  AnimatorUpdateListener(){

           @Override

           public void  onAnimationUpdate( ValueAnimator animator ){

                      val animatedFraction = animatar.getAnimatedFraction();

                      textView.scrollTo(startX +(int)(deltaX *animatedFraction),0);

           }

}

animatar.start();


我们的动画本质上没有作用在任何对象上,他只是在1000ms完成整个动画过程。

我们可以在动画的每一帧到来时获取动画完成的比例。然后根据这个比例计算View要滑动的距离。

1.3、使用延时策略:Handler 或者 View的postDelayed()

相关文章

  • view滑动

    View的滑动 Scroller 弹性滑动对象,用来实现View的弹性滑动。首先看scrollto跟scrollb...

  • 弹性滑动典型代码

    弹性滑动对象,用于实现View的弹性滑动。当使用View的scrollTo/scrollBy方法进行滑动时,其过程...

  • 1源码的角度分析View

    内容:view基础、view滑动、弹性滑动、横纵滑动冲突 view基础 获取view的宽高:width = rig...

  • 弹性滑动

    3.3 弹性滑动 知道了View的滑动,我们还要知道如何实现View的弹性滑动,比较生硬的滑动过去,这种方式的用户...

  • Android View的事件体系(三) 弹性滑动

    弹性滑动 知道了View的滑动,我们还要知道如何实现View的弹性滑动,比较生硬的滑动过去,这种方式的用户体验实在...

  • View的事件体系(上)

    目录 View基础知识 View的滑动 弹性滑动 View基础知识 View是Android中所有控件的基类,不光...

  • View弹性滑动

    弹性滑动的思想:将一次大的滑动分成若干次小的滑动并在一个时间段内完成。 1.1、使用Scroller Scroll...

  • View弹性滑动实现

    背景 最近在学习View的弹性滑动,View的弹性滑动有三种实现方式:1.Scroller实现2.动画实现3.延时...

  • Android开发之Scroller

    什么是Scroller? 翻译为弹性滑动对象,可以实现View的弹性滑动动画,与Scroller相关的就是大家比较...

  • Android 开发艺术探索读书笔记 3 -- View 的事件

    本篇文章主要介绍以下几个知识点:View 的基础知识;View 的滑动;弹性滑动 。 3.1 View的基础知识 ...

网友评论

      本文标题:View弹性滑动

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