美文网首页
View 滑动效果

View 滑动效果

作者: w小强 | 来源:发表于2019-06-03 23:25 被阅读0次

    title: View 滑动效果
    date: 2017-02-08
    tags: function
    categories: android


    [TOC]

    View

    实现View滑动的方式

    主要分为以下三种方式

    View[View 滑动方式] -->|内容滑动|a(使用ScrollTo和ScrollBy)
    View --> b(使用动画的方式)
    b --> |3.0以上版本|e[属性动画]
    b --> |只是影像滑东,事件还在原来位置|f[传统动画]
    View --> c(通过改变布局参数)
    
    view_huadong.png

    使用ScrollTo 和 ScrollBy

    只能实现View内容在View内的变动。

    scrollTo(int x,int y)//绝对距离的滑动
    scrollBy(int x,int y)//相对距离的滑动
    
    1. 使用这种方式处理内容滑动,为了达到平滑的效果,一般会借助Scroller类,具体的方法如下:
    public TestView extends View{
       //Scroller 本身不能操作View的滑动,它只是根据我们设定的初始化位置和结束位置以及滑动时间,帮我们计算每个时间点的具体位置。
        Scroller mScroller = new Scroller(mContext);
        private void smoothScrollTo(int destX,int destY){
            int scrollX = getScrollX();
            int deltaX = destX - scrollX;
            //初始化Scroller的起始和结束位置还有时间
            mScroller.startScroll(scrollX,0,deltax,0,1000);
            //开始重绘
            invalidate();
        }
        /**
         * View每次绘制调用OnDraw()方法的时候,会先调用这个方法。这个方法在父类中* 是空实现的
         */
        @Override
        public void computeScroll(){
           //计算时间。返回值表示当前滑动是否已经结束。
            if(mScroller.computeScrollOffset()){
               //调用内部方法开始滑动了
                scrollTo(mscroller.getCurrX(),mScroller.getCurrY());
                //开始下一次的重新绘制
                postInvalidate();
            }
        }
    }
    
    

    使用动画的方式

    属性动画

    通过操作"translationX"和"translationY"属性去进行平滑的滑动。使用ObjectAnimator.ofFloat()进行处理。
    
    • 衍生介绍 ValueAnimator 类
      这个类主要是设定一个范围和时间,然后数字平滑的在这个时间中变动,也可以设定变动规则(比如加速度)。
    ValueAnimator animator = ValueAnimator.ofInt(0,1).setDuration(1000);
    animator.addUpdateListener(new AnimatorUpdateListener(){
       @Override
       public void onAnimationUpdate(ValueAnimator animator){
          float fraction = animator.getAnimatedFraction();
          mButton.scrollTo(startX+(int)(deltaX * fraction),0);
       }
    });
    animator.start();
    

    常规动画

    常用的translate各种帧动画效果

    改变布局参数

    通过设定LayoutParams的Margin的方法,实现动画的效果

    相关文章

      网友评论

          本文标题:View 滑动效果

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