网页隐藏网站代码/淘宝关键词
摘要:
属性动画可以通过改变View的属性来真正的改变View的位置,同时当View的属性发生变化时,View会自动调用invalidate来刷新界面。View在3.0增加了以下属性来支持属性动画:
translationX/translationY:
这两个变量辅助控制View的位置,它们是真实位置与父元素设置布局位置的差值。
假设View的左坐标是left,上坐标是top,这两个值是View的容器设置的,在运行过程中不会发生改变,
真实的View位置在left + translationX,top+translationY的位置。rotation/rotationX/rotationY:
这些属性控制View绕中心点的2D和3D旋转效果,其中2D效果由rotation表示。scaleX/scaleY:
控制View绕中心点的2D缩放效果。pivotX/pivotY:
控制View的中心点位置,缩放和旋转动画基于此位置来执行动画,默认在View中心位置。x/y:
描述View最终在其容器内的位置,如上所述,x = left + translationX, y = top + translationY。alpha:
表示View的透明度,1不透明,0全透明(不可见)。
要想用属性动画实现补间动画的效果,其实只需要创建属性动画,并指定上面这些属性即可:
插值器:
android:interpolator 插值器,影响动画速度
AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
AnticipateInterpolator 开始的时候向后然后向前甩
AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
BounceInterpolator 动画结束的时候弹起
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方快然后慢
LinearInterpolator 以常量速率改变
OvershootInterpolator 向前甩一定值后再回到原来位置
android:shareInterpolator
动画合集是否共享同一个插值器,不指定插值器,子动画就需要单独指定或者使用默认值。
例:
1.透明度变化
void Alpha() {Animation animation = AnimationUtils.loadAnimation(this,R.anim.alpha);ivProgress.startAnimation(animation);}
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" ><alphaandroid:duration="1000"android:fromAlpha="0.1"android:toAlpha="1.0" ></alpha><!--透明度控制动画效果 alpha浮点型值:fromAlpha 属性为动画起始时透明度toAlpha 属性为动画结束时透明度说明:0.0表示完全透明1.0表示完全不透明以上值取0.0-1.0之间的float数据类型的数字长整型值:duration 属性为动画持续时间说明:时间以毫秒为单位--></set>
2.缩放变化
void Scale() {Animation animation = AnimationUtils.loadAnimation(this,R.anim.scale);ivProgress.startAnimation(animation);
}
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" ><scaleandroid:duration="2000"android:fillAfter="false"android:fromXScale="0.0"android:fromYScale="0.0"android:interpolator="@android:anim/accelerate_decelerate_interpolator"android:pivotX="50%"android:pivotY="50%"android:toXScale="1.0"android:toYScale="1.0" /><!--尺寸伸缩动画效果 scale属性:interpolator 指定一个动画的插入器在我试验过程中,使用android.res.anim中的资源时候发现有三种动画插入器:accelerate_decelerate_interpolator 加速-减速 动画插入器accelerate_interpolator 加速-动画插入器decelerate_interpolator 减速- 动画插入器其他的属于特定的动画效果浮点型值:fromXScale 属性为动画起始时 X坐标上的伸缩尺寸toXScale 属性为动画结束时 X坐标上的伸缩尺寸fromYScale 属性为动画起始时Y坐标上的伸缩尺寸toYScale 属性为动画结束时Y坐标上的伸缩尺寸说明:以上四种属性值0.0表示收缩到没有1.0表示正常无伸缩值小于1.0表示收缩值大于1.0表示放大pivotX 属性为动画相对于物件的X坐标的开始位置pivotY 属性为动画相对于物件的Y坐标的开始位置说明:以上两个属性值 从0%-100%中取值50%为物件的X或Y方向坐标上的中点位置长整型值:duration 属性为动画持续时间说明: 时间以毫秒为单位布尔型值:fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用--></set>
3.平移变化
void Translate() {Animation animation = AnimationUtils.loadAnimation(this,R.anim.translate);ivProgress.startAnimation(animation);}
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" ><translateandroid:duration="1000"android:fromXDelta="10"android:fromYDelta="10"android:toXDelta="100"android:toYDelta="100" /><!--translate 位置转移动画效果整型值:fromXDelta 属性为动画起始时 X坐标上的位置toXDelta 属性为动画结束时 X坐标上的位置fromYDelta 属性为动画起始时 Y坐标上的位置toYDelta 属性为动画结束时 Y坐标上的位置注意:没有指定fromXType toXType fromYType toYType 时候,默认是以自己为相对参照物长整型值:duration 属性为动画持续时间说明: 时间以毫秒为单位--></set>
4.旋转变化
void Rotate() {Animation animation = AnimationUtils.loadAnimation(this,R.anim.rotate);ivProgress.startAnimation(animation);
}
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" ><rotateandroid:duration="1000"android:fromDegrees="0"android:interpolator="@android:anim/accelerate_decelerate_interpolator"android:pivotX="50%"android:pivotY="50%"android:toDegrees="+360" /><!--rotate 旋转动画效果属性:interpolator 指定一个动画的插入器在我试验过程中,使用android.res.anim中的资源时候发现有三种动画插入器:accelerate_decelerate_interpolator 加速-减速 动画插入器accelerate_interpolator 加速-动画插入器decelerate_interpolator 减速- 动画插入器其他的属于特定的动画效果浮点数型值:fromDegrees 属性为动画起始时物件的角度toDegrees 属性为动画结束时物件旋转的角度 可以大于360度说明:当角度为负数——表示逆时针旋转当角度为正数——表示顺时针旋转(负数from——to正数:顺时针旋转)(负数from——to负数:逆时针旋转)(正数from——to正数:顺时针旋转)(正数from——to负数:逆时针旋转)pivotX 属性为动画相对于物件的X坐标的开始位置pivotY 属性为动画相对于物件的Y坐标的开始位置说明: 以上两个属性值 从0%-100%中取值50%为物件的X或Y方向坐标上的中点位置长整型值:duration 属性为动画持续时间说明: 时间以毫秒为单位--></set>
5.动画合集:标签表示动画合集,对应AnimationSet 类。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><rotateandroid:duration="1000"android:fromDegrees="0"android:pivotX="50%"android:repeatMode="restart"android:pivotY="50%"android:repeatCount="-1"android:toDegrees="359" /><translateandroid:duration="1000"android:fromXDelta="10"android:fromYDelta="10"android:toXDelta="100"android:toYDelta="100" /><alphaandroid:duration="1000"android:fromAlpha="0.1"android:toAlpha="1.0" ></alpha><scaleandroid:duration="2000"android:fillAfter="false"android:fromXScale="0.0"android:fromYScale="0.0"android:pivotX="50%"android:pivotY="50%"android:toXScale="1.0"android:toYScale="1.0" /></set>
参考:https://www.jianshu.com/p/aca197c2f534
Animator基础用法
基本概念及用法