日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Android實現縮放動畫_Android

作者:Android-kongqw ? 更新時間: 2022-09-13 編程語言

本文實例為大家分享了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 {@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);

原文鏈接:https://kongqw.blog.csdn.net/article/details/47084435

欄目分類
最近更新