Animation 动画
本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:
- 调用Xml动画
- Java代码动画
- 常用属性(关键属性)
调用Xml动画
初始化xml
<?xml version="1.0" encoding="utf-8"?>
<rotate android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="359"
android:toDegrees="0"
android:repeatCount="-1"//-1表示无限循环
android:repeatMode="restart"//正向还是反向
android:duration="20000"
></rotate>
<translate
android:duration="20000"
android:fromXDelta="-20"
android:fromYDelta="-20"
android:repeatCount="1000"
android:repeatMode="reverse"
android:toXDelta="0"
android:toYDelta="0">
</translate>
<alpha
android:duration="20000"
android:fromAlpha="1.0"
android:repeatCount="1000"
android:repeatMode="reverse"
android:toAlpha="0.9" />
<scale android:fromXScale="1.0"
android:fromYScale="1.0"
android:toXScale="1.8"
android:toYScale="1.8"
android:repeatCount="1000"
android:repeatMode="reverse"
android:duration="20000"></scale>
</set>
Java调用:
Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.leida);
animation.setInterpolator(new LinearInterpolator());//表示变化率,但不是运行速度。一个插补属性,可以将动画效果设置为加速,减速,反复,反弹等。默认为开始和结束慢中间快,本案例 做无限旋转,则需要设置为LinearInterpolator无间隔
// animation.setFillAfter(true);//是否保留原来位置
leida.startAnimation(animation);
Java代码实现动画
1.RotateAnimation (float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
参数说明:
float fromDegrees:旋转的开始角度。
float toDegrees:旋转的结束角度。
int pivotXType:X轴的伸缩模式,可以取值为ABSOLUTE绝对像素 RELATIVE_TO_SELF相对于自身、RELATIVE_TO_PARENT相对于父容器。
float pivotXValue:X坐标的伸缩值。
int pivotYType:Y轴的伸缩模式,可以取值为ABSOLUTE绝对像素、RELATIVE_TO_SELF相对于自身、RELATIVE_TO_PARENT。相对于父容器
float pivotYValue:Y坐标的伸缩值。
RotateAnimation animation=new RotateAnimation(0f, k*40+360f*3,Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF,0.6f);
animation.setInterpolator(new DecelerateInterpolator());
animation.setFillAfter(true);
Tran
-
1.TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
2.TranslateAnimation(float fromXType, float fromXValue, float toXType, float toXValue,float fromYType,float fromYValu,float toYType,float toYValue)
解释:
第一种方式
:float fromXDelta 动画开始的点离当前View X坐标上的差值
:float toXDelta 动画结束的点离当前View X坐标上的差值
:float fromYDelta 动画开始的点离当前View Y坐标上的差值
:float toYDelta 动画开始的点离当前View Y坐标上的差值
第二种方式
- 而当X方向或者Y方向上的Type选择为Animation.RELATIVE_TO_SELF或者 Animation.RELATIVE_TO_PARENT时候,则表示相位移量了,举个例子来说,如果在X方向上选择Animation.RELATIVE_TO_SELF,那么当XValue=1.0f时,则偏移量为一个自身宽度。如果在X方向上选择Animation.RELATIVE_TO_PARENT时,则偏移量为一个父控件宽度。Y方向是相同的道理,只是把宽度换成了高度而已。
Interpolator属性
“`