1. 程式人生 > >Android縮放動畫

Android縮放動畫

abs 時間 oct dcl txt ext fixed esc omx

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 ScaleAnimation(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,0f,1.0f);
    // 設置動畫播放的時間
    sa.setDuration(1000);
    // 開始播放動畫
    iv.startAnimation(sa);
}

效果

以圖片左上角為原點。從沒有,放大到圖片原大小


6個參數構造方法

   /**
    * 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 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 is 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 [email protected] #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 [email protected] #INFINITE}. Defaults to [email protected] #RESTART}. 
 *
 * @param repeatMode [email protected] #RESTART} or [email protected] #REVERSE}
 * @attr ref android.R.styleable#Animation_repeatMode
 */
public void setRepeatMode(int repeatMode) {
    mRepeatMode = repeatMode;
}

使用

sa.setRepeatMode(ScaleAnimation.REVERSE);

Android縮放動畫