Android实现缩放动画

2022-07-20 10:43:08

本文实例为大家分享了Android实现缩放动画的具体代码,供大家参考,具体内容如下核心方法publicvoidstartAnimation(Animationanimation)执行动画,参数可...

本文实例为大家分享了android实现缩放动画的具体代码,供大家参考,具体内容如下

核心方法

public void startAnimation(Animation animation)

执行动画,参数可以是各种动画的对象,Animation的多态,也可以是组合动画,后面会有。

4个参数构造方法

/**
* Constructor to use when building a ScaleAnimation from code
*
* @param fromX Horizontal scaling factor to apply at the start of the animation
* @param toX Horizontal scaling factor to apply at the end of the animation
* @param fromY Vertical scaling factor to apply at the start of the animation
* @param toY Vertical scaling factor to apply at the end of the animation
*/
public pythonScaleAnimation(float fromX, float toX, float fromY, float toY) {
  mResources = null;
  mFromX = fromX;
  mToX = toX;
  mFromY = fromY;
  mToY = toY;
  mPivotX = 0;
  mPivotY = 0;
}

用法

public void scale(View view) {
  // 创建缩放的动画对象
  ScaleAnimation sa = new ScaleAnimation(0f,1.0f,0ftoBae,1.0f);
  // 设置动画播放的时间
  sa.setDuration(1000);
  // 开始播放动画
  iv.startAnimation(sa);
}

效果

以图片左上角为原点,从没有,放大到图片原大小

6个参数构造方法

/**
  * Constructor to use when building a ScaleAnimation from code
  *
  *javascript @param fromX Horizontal scaling factor to apply at the start of the animation
  * @param toX Horizontal scaling factor to apply at the end of the animation
  * @param fromY Vertical scaling factor to apply at the start of the animation
  * @param toY Vertical scaling factor to apply at the end of the animation
  * @param pivotX The X coordinate of the point about which the object is being scaled, specified as an absolute number where 0 is the left edge. (This point remains fixed while the object changes size.)
  * @param pivotY The Y coordinate of the point about which the object is being scaled, specified as an absolute number where 0 is the top edge. (This point remains fixed while the object changes size.)
  */
 public ScaleAnimation(float fromX, float toX, float fromY, float toY, float pivotX, float pivotY) {
   mResources = null;
   mFromX = fromX;
   mToX = toX;
   mFromY = fromY;
   mToY = toY;

   mPivotXType = ABSOLUTE;
   mPivotYType = ABSOLUTE;
   mPivotXValue = pivotX;
   mPivotYValue = pivotY;
   initializePivotPoint();
 }

前4个参数和上面的用法一样,后两个参数是设置图片缩放的原点,四个参数的构造默认将这两个参数都设置了0,所以是在图片左上角开始缩放

用法

ScaleAnimation sa = new ScaleAnimation(0f, 1.0f, 0f, 1.0f, iv.getWidth() / 2, iv.getHeight() / 2);
// 设置动画播放的时间
sa.setDuration(1000);
// 开始播放动画
iv.startAnimation(sa);

效果

以图片的中心为原点,从没有放大到图片原大小

8个参数构造方法

/**
  * Constructor to use when building a ScaleAnimation from code
  *
  * @param fromX Horizontal scaling factor to apply at the start of the animation
  * @param toX Horizontal scaling factor to apply at the end of the animation
  * @param fromY Vertical scaling factor to apply at the start of the animation
  * @param toY Vertical scaling factor to apply at the end of the animation
  * @param pivotXType Specifies how pivotXValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.
  * @param pivotXValue The X coordinate of the point about which the object is being scaled, specified as an absolute number where 0 is the left edge. (This point remains fixed while the object changes size.) This value can either be an absolute number if pivotXType phpis ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise.
  * @param pivotYType Specifies how pivotYValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.
  * @param pivotYValue The Y coordinate of the point about which the object is being scaled, specified as an absolute number where 0 is the top edge. (This point remains fixed while the object changes size.) This value can either be an absolute number if pivotYType is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise.
  */
 public ScaleAnimation(float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) {
   mResources = null;
   mFromX = fromX;
   mToX = toX;
   mFromY = fromY;
   mToY = toY;

   mPivotXValue = pivotXValue;
   mPivotXType = pivotXType;
   mPivotYValue = pivotYValue;
   mPivotYType = pivotYType;
   initializePivotPoint();
 }

用法

// 创建缩放的动画对象
ScaleAnimation sa = new ScaleAnimation(0f, 1.0f, 0f, 1.0f, ScaleAnimation.RELATIVE_TO_SELF, 0.5f, ScaleAnimation.RELATIVE_TO_SELF, 0.5f);
// 设置动画播放的时间
sa.setDuration(1000);
// 开始播放动画
iv.startAnimation(sa);

和上面6个参数的相比只是多了第5和第7个参数,分别设置他们的类型,注释里面已经说明了,可以设置Animation.ABSOLUTE、Animation.RELATIVE_TO_SELF、Animation.RELATIVE_TO_PARENT类型

效果

效果和上面一样,以图片的中心为原点,从没有放大到图片原大小。

设置动画重复播放的次数的方法

/**
* Sets how many times the animation should be repeated. If the repeat
* count is 0, the animation is never repeated. If the repeat count is
* greater than 0 or {@link #INFINITE}, the repeat mode will be taken
* into account. The repeat count is 0 by default.
*
* @param repeatCount the number of times the animation should be repeated
* @attr ref android.R.styleable#Animation_repeatCount
*/
public void setRepeatCount(int repeatCount) {
  if (repeatCount < 0) {
    repeatCount = INFINITE;
  }
  mRepeatCount = repeatCount;
}

使用

sa.setRepeatCount(2);

设置动画重复播放的模式的方法

/**
* Defines what this animation should do when it reaches the end. This
* setting is applied only when the repeat count is either greater than
* 0 or {@link #INFINITE}. Defaults to {@link #RESTART}.
*
* @param repeatMode {@link #RESTART} or {@link #REVERSE}
* @attr ref android.R.styleable#Animation_repeatMode
*/
public void setRepeatMode(int repeatMode) {
  mRepeatMode = repeatMode;
}

使用

sa.setRepeatMode(ScaleAnimation.REVERSE);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。