Android学习—补间动画(缩放动画)

时间:2023-02-01 08:42:58

用XML文件来设置动画的属性

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <set xmlns:android="http://schemas.android.com/apk/res/android">
 3     <!--
 4         fromXScale:动画在X坐标的初始大小(横向的初始大小)
 5         fromYScale:动画在Y坐标的初始大小(垂直方法的初始大小)
 6         toXScale:动画在X坐标的最终大小(横向的最终大小)
 7         toYScale:动画在Y坐标的最终大小(垂直的最终大小)
 8         pivotX:动画在X坐标显示的位置(动画在屏幕上横向显示的位置)
 9         pivotY:动画在Y坐标显示的位置(动画在屏幕上垂直显示的位置)
10        -->
11     <scale
12         android:fromXScale="0"
13         android:fromYScale="0"
14         android:toXScale="2.0"
15         android:toYScale="2.0"
16         android:pivotX="50%"
17         android:pivotY="50%"
18         android:duration="2000"
19         android:repeatCount="3"
20         />
21 </set>
 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
 3     android:layout_height="match_parent"
 4     tools:context="com.test2_23.test2_23.ScaleActivity">
 5     <ImageView
 6         android:id="@+id/scale_xml_img"
 7         android:src="@drawable/img_bird"
 8         android:layout_width="wrap_content"
 9         android:layout_height="wrap_content"
10         />
11 </RelativeLayout>
 1 public class ScaleActivity extends Activity {
 2 
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_scale);
 7         ImageView iv = (ImageView) findViewById(R.id.scale_xml_img);
 8         //使用AnimationUtils类的loadAnimation来加载xml格式的动画文件
 9         Animation animation = AnimationUtils.loadAnimation(this,R.anim.animation_scale);
10         iv.clearAnimation();
11         iv.startAnimation(animation);
12 
13     }
14 }

用Java代码来设置动画的属性

 1 public class Scale_javaActivity extends Activity {
 2 
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_scale_java);
 7 
 8         ImageView img = (ImageView) findViewById(R.id.scale_java_img);
 9         //有一个ScaleAnimation类来创建一个缩放动画
10         //构造函数参数分别是:fromXScale,toXScale,fromYScale,toYScale
11         //Animation animation = new ScaleAnimation(0.0f,2.0f,0.0f,2.0f);
12         //构造函数的重载可以把pivotX和pivotY一块设置进去,
13         //但是要还需要添加这个缩放是以自己为参考来缩放还是以父类
14         //添加Animation.RELATIVE_TO_SELF相对自己
15         //添加Animation.RELATIVE_TO_PARENT相对自己
16         Animation animation = new ScaleAnimation(
17                 0.0f,2.0f,0.0f,2.0f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
18         animation.setDuration(2000);
19         img.clearAnimation();
20         img.startAnimation(animation);
21     }
22 }

 

缩放动画可以演示一个视图在宽高上的缩放效果。

主要属性:

FromXScale: X坐标的初始状态的值,视图横向的初始状态值0.0是不显示;

FromYScale:Y坐标的初始状态值,视图竖向的初始状态值.

toXScale:X坐标的最终状态值,视图横向缩放后的大小,是按倍数计算;

toYScale:Y坐标的最终状态值,视图竖向缩放后的大小。

PivotX:视图缩放在手机上X轴的开始位置50%是指水平方向居中的位置开始播放动画。

PivotY:视图缩放在手机上Y轴的开始位置50%是指垂直方向居中的位置开始播放动画。

Duration:动画的持续时间。

 

如果给一张图片添加缩放动画,他的初始状态fromXScale是横向的初始大小,0.0是不显示,同样fromYScale是垂直方向的初始大小。

toXScale设置的是当动画结束时图片横向要缩放到原来图片的倍数大小,可以是1倍,也可以是多倍。比如设置2.0那么图片在动画执行完毕后他的宽是原有图片的两倍大小,toYScale是垂直方法的缩放,PivotX是动画在手机上x坐标上的位置,会在手机横向的哪个位置开始显示,pivotY是手机在垂直方向的显示位置,他也有repeatCount属性,可以重复执行多次。