Android 之 TranslateAnimation類:位移動畫類
Android中提供了4中動畫:
AlphaAnimation 透明度動畫
ScaleAnimation 縮放動畫
TranslateAnimation 位移動畫
RotateAnimation 旋轉動畫
因為這次有使用到TranslateAnimation,所以這次先講TranslateAnimation。
android.view.animation
類 TranslateAnimation
java.lang.Object
android.view.animation.Animation
android.view.animation.TranslateAnimation
所有已實現的介面: Cloneable
欄位
從類 android.view.animation.Animation 繼承的欄位
ABSOLUTE | 構造中的引數,絕對座標 |
INFINITE | setRepeatCount(int)的傳入引數,值為-1 即是無限次的 |
RELATIVE_TO_PARENT | 構造中的引數,相對於父控制元件身的座標 |
RELATIVE_TO_SELF | 構造中的引數,相對於自身的座標 |
RESTART | setRepeatMode(int)的傳入引數,如果有重複的話,重新播放 |
REVERSE | setRepeatMode(int)的傳入引數,如果有重複的話,反向播放 |
START_ON_FIRST_FRAME | setStartTime(long startTimeMillis)的傳入引數,在第一次呼叫getTransformation啟動動畫 |
ZORDER_BOTTOM | setAnimation()的引數,在動畫播放期間,強制把當前播放的內容放到其他內容之下 |
ZORDER_NORMAL | setAnimation()的引數,正在播放的動畫內容保持當前的Z軸順序 |
ZORDER_TOP | setAnimation()的引數,在動畫播放期間,強制把當前播放的內容放到其他內容的上面 |
構造方法
TranslateAnimation(Context context, AttributeSet attrs)
Constructor used when a TranslateAnimation is loaded from a resource.
TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
Constructor to use when building a TranslateAnimation from code
TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)
Constructor to use when building a TranslateAnimation from code
我們比較常用的是後面兩個構造方法,現在我們來分析下構造方法
TranslateAnimation(Context context, AttributeSet attrs) 繼承的構造
- 引數context: 上下文環境
- 引數attrs:自定義屬性
- 構造用途:從XML中構建TranslateAnimation
TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
- 引數fromXDelta:位置變化的起始點X座標。
- 引數toXDelta:位置變化的結束點X座標。
- 引數fromYDelta:位置變化的起始點Y座標。
- 引數toYDelta:位置變化的結束點Y座標。
- 構造用途:定義一個從起始座標XY開始到 結束點XY的 TranslateAnimation
TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)
- 引數fromXType:開始時x軸相對於元件的位置型別。
- 引數fromXValue:開始時x軸的座標。根據fromXType代表不同的意義。
- 引數toXType:結束時x軸相對於元件的位置型別。
- 引數toXValue:結束時x軸的座標。根據toXType代表不同的意義。
- 引數fromYType:開始時y軸相對於元件的位置型別。
- 引數fromYValue:開始時y軸的座標。根據fromYType代表不同的意義。
- 引數toYType:結束時y軸相對於元件的位置型別。
- 引數toYValue:結束時y軸的座標。根據toYType代表不同的意義。
- 構造用途:相比第二的構造,這個構造更加自定義,不在是固定的位置屬性
方法
從類 android.view.animation.Animation 繼承的公有方法
- void cancel()
- 作用:取消這個動畫
- long computeDurationHint()
- 返回值:計算一個動畫的持續時間,返回一個以毫秒為單位的資料
- int getBackgroundColor()
- 返回值:這個動畫的背景顏色
- boolean getDetachWallpaper()
- 返回值: 這個動畫是否脫離桌布執行的boolean值
- long getDuration()
- 返回值:這個動畫應該持續的時間
- boolean getFillAfter()
- 返回值: 這個動畫結束時畫面是否停留在最後一幀 的boolean值
- boolean fillBefore()
- 返回值: 這個動畫結束時畫面是否停留在第一幀 的boolean值
- Interpolator getInterpolator()
- 返回值: 此動畫的插值器型別
- int getRepeatCount()
- 返回值: 動畫要重複多少次
- int getRepeatMode()
- 返回值:動畫要重複的模式,例如重新開始,反向開始
- long getStartOffset()
- 返回值:這個動畫在呼叫start方法後延遲了多久才啟動
- long getStartTime()
- 返回值:這個動畫呼叫start方法的時間
- boolean getTransformation(long currentTime, Transformation outTransformation, float scale)
- 引數currentTime:傳入某個動畫時間
- 引數outTransformation:獲取傳入時間點的變形的原始資料物件
- 引數scale:縮放比例
- 返回值:如果當前這個動畫時間動畫還在執行則返回true
- boolean getTransformation(long currentTime, Transformation outTransformation)
- 引數currentTime:傳入某個動畫時間
- 引數outTransformation:獲取傳入時間點的變形的原始資料物件
- 返回值:如果當前這個動畫時間動畫還在執行則返回true
- int getZAdjustment()
- 返回值:Animation在Z軸方向的順序
- boolean hasEnded()
- 返回值:動畫是否已經結束
- boolean hasStarted()
- 返回值:動畫是否已經開始
- void initialize(int width, int height, int parentWidth, int parentHeight)
- 引數width:動畫物件的寬
- 引數height:動畫物件的高
- 引數parentWidth:父控制元件的寬
- 引數parentWidth:父控制元件的高
- 作用:初始化動畫物件以及父控制元件尺寸。
- boolean isFillEnabled()
- 返回值:當前動畫的使能填充屬性。當該屬性為true時,將執行setFillBefore和setFillAfter方法,否則將忽略setFillBefore和setFillAfter方法。
- boolean isInitialized()
- 返回值:如果動畫已經初始化 則返回true
- void reset()
- 作用:重置動畫到初始化狀態
- void restrictDuration (long durationMillis)
- 引數durationMillis:最大允許動畫持續時間
- 作用:調整動畫持續時間,確保了重複執行,也不會持續的比給定的時間更長。
- void scaleCurrentDuration (float scale)
- 引數scale:縮放比例
- 作用:按一定的比例放大持續時間
- void setAnimationListener(Animation.AnimationListener listener)
- 引數listener:動畫監聽
- 作用:給一個動畫設定監聽,設定類似偵聽動畫的開始或動畫重複的通知
- void setBackgroundColor(int bg)
- 引數bg:Color的int值
- 作用:設定動畫的背景顏色
- void setDetachWallpaper(boolean detachWallpaper)
- 引數detachWallpaper:是否脫離桌布執行動畫
- 作用:如果為true,這個動畫將會脫離背景執行,首先你要有個背景
- void setDuration(long durationMillis)
- 引數durationMillis:動畫的持續時間
- 作用:設定一個動畫的持續時間
- void setFillAfter(boolean fillAfter)
- 引數fillAfter:動畫是否停留在最後一幀
- 作用:設定動畫是否停留在最後一幀,為true則是停留在最後一幀
- void setFillBefore(boolean fillBefore)
- 引數fillBefore:動畫是否停留在第一幀
- 作用:設定動畫是否停留在第一幀,為true則是停留在第一幀
- void setFillEnabled(boolean fillEnabled)
- 引數fillEnabled:動畫是否使能填充
- 作用:設定動畫是否使能填充,為true將執行setFillBefore和setFillAfter方法,否則將忽略setFillBefore和setFillAfter方法。
- void setInterpolator(Context context, int resID)
- 引數context:上下文環境
- 引數resID:插值器R ID
- 作用:設定動畫插值器屬性,使用XML設定
- void setInterpolator(Interpolator i)
- 引數i:插值器
- 作用:設定動畫插值器屬性,使用程式碼設定
- void setRepeatCount(int repeatCount)
- 引數repeatCount:重複次數
- 作用:設定動畫重複次數
- void setRepeatMode(int repeatMode)
- 引數repeatMode:重複型別,例如 重頭開始,反向開始
- 作用:設定動畫重複時候的模式
- void setStartOffset(long startOffset)
- 引數startOffset:延遲時間
- 作用:當呼叫start方法後延遲一定時間開始
- void setStartTime(long startTimeMillis)
- 引數startTimeMillis:動畫開始時間
- 作用:在特定的時間呼叫start方法
- void setZAdjustment(int zAdjustment)
- 引數zAdjustment:Z軸方向的順序(TOP,NORMAL,BOTTOM)
- 作用:調整播放內容在Z軸方向的順序
- void start()
- 作用:第一次執行getTransformation方法的時候才會執行動畫
- void startNow()
- 作用:執行動畫的主要方法,使用時需要先通過setAnimation方法為某一個View物件設定動畫.
- boolean willChangeBounds()
- 返回值:判斷動畫是否會改變檢視的邊界,ture為會改變
- boolean willChangeTransformationMatrix ()
- 返回值:判斷動畫是否會改變移動變換的矩陣,ture為會改變
從類 android.view.animation.Animation 繼承的受保護的方法
以下方法不可以被呼叫使用,只是簡單說明下是什麼
- void applyTransformation(float interpolatedTime, Transformation t)
- 引數interpolatedTime:動畫進度時間值,取值範圍在[0.0f-1.0f]
- 引數t:動畫某一幀中變形的原始資料
- 作用:在自定義動畫類的時候都要重寫這個方法,主要作用是把一些屬性組裝成一個Transformation類,這個方法會被父類的getTransformation方法呼叫
- Animation clone ()
- 返回值:此動畫物件的副本
- void ensureInterpolator ()
- 作用:這個動畫有一個插值器
- void finalize ()
- 作用:垃圾回收器要回收物件的時候,首先要呼叫這個類的finalize方法
- float getScaleFactor ()
- 作用:返回每個類在動畫中的縮放比例因子
- float resolveSize (int type, float value, int size, int parentSize)
- 引數type:動畫座標的型別
- 引數value:動畫座標的值
- 引數size:動畫物件的大小
- 引數parentSize:動畫物件的父物件的大小
- 返回值:返回動畫的尺寸
舉一個栗子
public class firstActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) { //過載onCreate方法
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView物件
Button btn1=(Button)findViewById(R.id.button1); //按鈕物件
Button btn2=(Button)findViewById(R.id.button2);
final Animation translateAnimation=new TranslateAnimation(0,300,0,300); //位置變化動畫效果
btn1.setOnClickListener(new View.OnClickListener() { //設定監聽器
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
translateAnimation.setDuration(3000); //設定動畫持續時間
translateAnimation.setRepeatCount(2); //設定重複次數
translateAnimation.setRepeatMode(Animation.REVERSE); //反方向執行
image.setAnimation(translateAnimation); //設定動畫效果
translateAnimation.startNow(); //啟動動畫
}
});
btn2.setOnClickListener(new View.OnClickListener() { //設定監聽器
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
translateAnimation.cancel(); //取消動畫執行
}
});
}
}
在這段程式碼中,首先通過TranslateAnimation構造方法建立了一個位置變化的動畫物件。然後,在第一個按鈕監聽器中設定了動畫的持續時間、重複次數和重複模式等,然後啟動該動畫。在第二個按鈕監聽器中取消該動畫。讀者執行這段程式碼
相關文章
- 【Android動畫】之Tween動畫 (漸變、縮放、位移、旋轉)Android動畫
- 一次Android動畫工具類的封裝Android動畫封裝
- Android工具類之檔案操作工具類Android
- Android工具類之網路相關輔助類Android
- iOS動畫系列之七:實現類似Twitter的啟動動畫iOS動畫
- 深入理解 Android 動畫 Interpolator 類的使用Android動畫
- iOS CAAnimation之CATransition (自定義轉場動畫工具類)iOS動畫
- iOS 動畫入門到精通(1.2):位移iOS動畫
- Android之Activity基類封裝Android封裝
- Android之動畫Android動畫
- Android筆記之Kotlin、Java的內部類?巢狀類?Android筆記KotlinJava巢狀
- Android 動畫之屬性動畫Android動畫
- Java中常用類之Object類JavaObject
- java內部類之成員內部類之匿名內部類Java
- 【Android 動畫】動畫詳解之屬性動畫(三)Android動畫
- 【Android 動畫】動畫詳解之補間動畫(一)Android動畫
- 【Android 動畫】動畫詳解之屬性動畫(五)Android動畫
- Flutter 類抽屜效果動畫實現。Flutter動畫
- 類似列表的view伸縮動畫View動畫
- java學習之Date類、DateFormat類JavaORM
- Android工具類之手機元件呼叫工具類Android元件
- Android開發工具類之DownloadManagerProAndroid
- java內部類之成員內部類之區域性內部類Java
- Android工具類庫Android
- [Android][工具類]LocationUtilsAndroid
- Android-Looper類AndroidOOP
- Xamarin.Android之動畫Android動畫
- ML.NET 示例:多類分類之問題分類
- ML.NET 示例:多類分類之鳶尾花分類
- UML類圖--類之間的關係
- JAVA類庫之——Character類(持續更新)Java
- tcbs之集合類與子類的示例
- 類與類之間的基本關係
- Android動畫效果之Tween Animation(補間動畫)Android動畫
- Android動畫效果之Frame Animation(逐幀動畫)Android動畫
- 類之基礎
- java之抽象類Java抽象
- jQuery位移和透明度同時進行動畫效果jQuery動畫