本例实现一个图片点击之后先放大再缩小的动画效果
首先:图片的XML
<ImageView
android:layout_gravity="center_horizontal"
android:scaleType="center"
android:id="@+id/red_pic"
android:layout_width="180dp"
android:layout_height="180dp"
android:src="@mipmap/red"/>
接下来:动画效果文件,放置在res/anim/下
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="false">
<!--fillBefore是指动画结束时画面停留在此动画的第一帧;-->
<!--fillAfter是指动画结束是画面停留在此动画的最后一帧。-->
<!--
fromXDelta,fromYDelta 起始时X,Y座标,屏幕右下角的座标是X:320,Y:480
toXDelta, toYDelta 动画结束时X,Y的座标
interpolator 指定动画插入器,常见的有
加速减速插入器 accelerate_decelerate_interpolator
加速插入器 accelerate_interpolator,
减速插入器 decelerate_interpolator。
fromXScale,fromYScale, 动画开始前X,Y的缩放,0.0为不显示, 1.0为正常大小
toXScale,toYScale, 动画最终缩放的倍数, 1.0为正常大小,大于1.0放大
pivotX, pivotY 动画起始位置,相对于屏幕的百分比,两个都为50%表示动画从屏幕中间开始
startOffset, 动画多次执行的间隔时间,如果只执行一次,执行前会暂停这段时间,单位毫秒
duration, 一次动画效果消耗的时间,单位毫秒,值越小动画速度越快
repeatCount, 动画重复的计数,动画将会执行该值+1次
repeatMode, 动画重复的模式,reverse为反向,当第偶次执行时,动画方向会相反。restart为重新执行,方向不变
-->
<!--先放大-->
<scale
android:duration="300"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="2"
android:toYScale="2" />
<!--然后缩小-->
<scale
android:duration="300"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="300"
android:toXScale="0.5"
android:toYScale="0.5" />
</set>
初始化动画对象,并加载我们在之前动画资源当中的预设
Animation animation;
animation= AnimationUtils.loadAnimation(this,R.anim.anim_small);
图片的点击事件当中开始动画
redPic.startAnimation(animation);