补间动画 、插值器

Animation类相关属性:

android:duration  动画持续时间,以毫秒为单位

android:fillAfter    如果设置为true,控件动画结束时,将保持动画最后时的状态

android:fillBefore 如果设置为true,控件动画结束时,将还原动画开始时的状态

android:fillEnabled  与fillBefore效果相同,都是在动画结束时,将控件还原到初始化状态

android:repeatCount 动画重复次数 负数表示无限循环

android:repeatMode  重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新播放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义  是重复的类型,即回放时的动作

android:interpolator  设置插值器,其实就是制定的动作效果。




scale 渐变尺寸伸缩动画效果

alpha 渐变透明度动画效果

translate 画面转换位置移动动画效果

rotate 画面转移旋转动画效果


动画的xml文件应该放在res/anim目录下

scale标签---调节尺寸

android:fromXScale   起始的X方向上相对自身的缩放比例,浮点值,比如1.0代表自身无变化,0.5代表起始时缩小一倍,2.0代表放大一倍

android:toXSxale   结尾的X方向上相对自身的缩放比例,浮点值

android:fromYScale   起始的Y方向上相对自身的缩放比例,浮点值

android:toYScale   结尾的Y方向上相对自身的缩放比例,浮点值

android:pivotX   缩放起点X轴座标,可以是数值、百分比、百分数p三种样式,比如50、50%、50%p,当为数值时,表示当前view的左上角,即原点处加上50px,做为起始缩放点;如果为50%,表示在当前控件的左上角加上自己宽度的50%做为起始点;如果是50%p,那么就是表示在当前的左上角加上父控件宽度的50%做为起始点x轴座标

android:pivotY    缩放起点Y轴的座标,取值及意义跟android:pivotX一样


<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="0.0"
    android:toXScale="1.4"
    android:fromYScale="0.0"
    android:toYScale="1.4"
    android:pivotX="50"
    android:pivotY="50"
    android:duration="700" />


alpha标签---调节透明度

android:fromAlpha动画开始的透明度,从0.0 - 1.0,0.0表示全透明,1.0表示完全不透明

android:toAlpha动画结束时的透明度,也是从0.0 - 1.0,0.0表示全透明,1.0表示完全不透明


<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1.0"
    android:toAlpha="0.1"
    android:duration="3000"
    android:fillBefore="true">
</alpha>


rotate标签---旋转

android:fromDegrees  开始旋转的角度位置,正值代表顺时针方向度数,负值代表逆时针方向度数

android:toDegrees      结束时旋转到的角度位置,正值代表顺时针方向度数,负值代表逆时针方向度数

android:pivotX    缩放起点X轴座标,可以是数值、百分数、百分数p三种样式,比如50,50%,50%p等,意义和scale标签时讲的一样

android:pivotY    缩放起点Y轴座标,可以是数值、百分数、百分数p三种样式,比如50,50%,50%p等,意义和scale标签时讲的一样


<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="-650"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="3000"
    android:fillAfter="true">
</rotate>


translate标签---平移

android:fromXDelta    起始点X轴座标,可以是数值、百分数、百分数p三种样式

android:fromYDelta   起始点Y轴座标,可以是数值、百分数、百分数p三种样式

android:toXDelta        结束点X轴座标

android:toYDelta   结束点Y轴座标


<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0" 
    android:toXDelta="-80"
    android:fromYDelta="0"
    android:toYDelta="-80"
    android:duration="2000"
    android:fillBefore="true">
</translate>


set标签---定义动画合集

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="3000"
    android:fillAfter="true">
    
  <alpha 
    android:fromAlpha="0.0"
    android:toAlpha="1.0"/>
  
  <scale
    android:fromXScale="0.0"
    android:toXScale="1.4"
    android:fromYScale="0.0"
    android:toYScale="1.4"
    android:pivotX="50%"
    android:pivotY="50%"/>
  
  <rotate
    android:fromDegrees="0"
    android:toDegrees="720"
    android:pivotX="50%"
    android:pivotY="50%"/>
       
</set>


代码中使用:

ScaleAnimation  scaleAnimation= AnimationUtils.loadAnimation(this,R.anim.scaleanim);

tv.startAnimation(scaleAnimation);





插值器:

  • AccelerateDecelerateInterpolator   在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
  • AccelerateInterpolator                     在动画开始的地方速率改变比较慢,然后开始加速
  • AnticipateInterpolator                      开始的时候向后然后向前甩
  • AnticipateOvershootInterpolator     开始的时候向后然后向前甩一定值后返回最后的值
  • BounceInterpolator                          动画结束的时候弹起
  • CycleInterpolator                             动画循环播放特定的次数,速率改变沿着正弦曲线
  • DecelerateInterpolator                    在动画开始的地方快然后慢
  • LinearInterpolator                            以常量速率改变
  • OvershootInterpolator                      向前甩一定值后再回到原来位置





发布了30 篇原创文章 · 获赞 0 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章