animation- 动画效果实现(xml形式实现)
1.定义xml动画
1)在anim文件夹下定义xml文件
解释:这个文件夹下面的文件会被默认为动画文件,如果这个文件不存在,需要自己创建
display_result_anim.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" >
<!--缩放动画-->
<scale android:duration="300" android:fromXScale="2.0" android:fromYScale="2.0" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:pivotX="50%" android:pivotY="50%" android:toXScale="1.0" android:toYScale="1.0" />
<!--位置移动动画-->
<translate android:duration="300" android:fromYDelta="154.5%" android:toYDelta="0" android:fromXDelta="-49.5%" android:toXDelta="0" > </translate>
<!--透明度动画-->
<alpha android:fromAlpha="1" android:toAlpha="0.5" android:duration="300" /> </set>
display_input_anim.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromXDelta="0" android:fromYDelta="44.1%" android:toXDelta="0" android:toYDelta="0" /> <alpha android:fromAlpha="0" android:toAlpha="1" android:duration="300" /> </set>
2.代码中引用
import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.view.animation.TranslateAnimation; private Animation myAnimationInput; private Animation myAnimationResult; myAnimationInput = AnimationUtils.loadAnimation(context, R.anim.display_input_anim); myAnimationResult = AnimationUtils.loadAnimation(context,R.anim.display_result_anim); myAnimationInput.setFillAfter(true); myAnimationResult.setFillAfter(true); EditText current = (EditText) getCurrentView(); current.startAnimation(myAnimationInput); next.startAnimation(myAnimationResult);
知识点总结:
1.android:fromYDelta="44.1%" 它的属性值有三种形式
(1)如果直接写33,表示的是距离这个动画拥有者(edittext)的值为33px,根据+ -决定是在拥有者上还是下 ;如果是写成33%,这个就是表示的,相对于动画拥有者自身尺寸的33%的距离,这个尺寸是动画拥有者最开始设定的尺寸,也就是不加动画的时候的尺寸;如果写成是33%p,那么就是相对于父容器的尺寸了
(2)如果是强制写成33dp的话,会报错,说明不支持这么方式
(3)如果是引用@dimen的话,你会发现引用值的结果是0,也就是没有动画效果,虽然它并不会报错
2.各个动画的效果
三种如上,最后一种是
旋转动画
<rotate android:fromDegrees="0" android:toDegrees="-360" android:pivotX="50%" android:pivotY="50%" android:duration="3000" />
属性就是角度值,正负表示顺逆时针