zoukankan      html  css  js  c++  java
  • Android中让View匀速旋转

    项目需求,需要一个实现一个单帧的旋转动画,来提示当前进度,类似与圆圈型的progressbar

    首先定义anim文件:

    [html] view plaincopyprint?

    1.     <rotate   

    2.             android:interpolator="@android:anim/linear_interpolator"              

    4.             android:fromDegrees="0"   

    5.             android:toDegrees="+359"                         

    7.             android:pivotX="50%"   

    8.             android:pivotY="50%"       

    9.             android:repeatMode="restart"  

    10.          android:repeatCount="infinite"  

    11.          android:duration="2000" />  

    这就是以显示的图片问中心的无限旋转动画,然后对相应的组件使用该动画:这时我们发现效果不是匀速旋转,也就是说我们在xml里定义的android:interpolator="@android:anim/linear_interpolator"没有起到应有的作用,通过查找资料,发现该属性需要在代码里设定才能达到效果,于是实验了一下,发现确实如此,代码如下:

    my_rotate.xml文件如下:

    [html] view plaincopyprint?

    1.     <rotate            

    3.             android:fromDegrees="0"   

    4.             android:toDegrees="+359"                         

    6.             android:pivotX="50%"   

    7.             android:pivotY="50%"       

    8.             android:repeatMode="restart"  

    9.             android:repeatCount="infinite"  

    10.          android:duration="2000" />  

    java代码如下:

    [java] view plaincopyprint?

    1.     Animation anim = AnimationUtils.loadAnimation(this, R.anim.my_rotate);         

    2.     LinearInterpolator lir = new LinearInterpolator();    

    3.     anim.setInterpolator(lir);   

    4.     findViewById(R.id.test).startAnimation(anim);        

    这时新问题又出现了,这个动画效果应因为定义的是无限循环的,当我们作为圆形的progressbar使用时没法停止该动画效果,即使我们在符合触发条件时把相应的控件设置为不可见,其动画效果依然在屏幕上旋转,该怎么办呢?

    同样通过百度,我们发现android提供了一个clearAnimation()方法,用于动画的清除,这时在满足我们的progressbar停止条件时,我们让相应控件调用clearAnimation()方法,然后在将其设置为不可见就实现了类progressbar效果。

  • 相关阅读:
    20190430-screen、client、offset、scroll等JS中各种宽度距离
    20190423-Vscode与Sass不得不说的秘密(>^ω^<)
    20190422-外部导入CSS样式之link、CSS@import、Sass分音
    20190421-那些年使用过的CSS预处理器(CSS Preprocessor)之Sass and Less
    20190421-那些年使用过的CSS预处理器(CSS Preprocessor)
    20190409-层叠の层叠上下文、层叠水平、层叠顺序、z-index、伪元素层叠
    20190408-规范书写
    20190404-transition、transform转换、animation、媒体查询
    20190402-display展现、float浮动
    20190401-颜色书写
  • 原文地址:https://www.cnblogs.com/roccheung/p/5797451.html
Copyright © 2011-2022 走看看