Animation類:動畫抽象類java
Android系統提供了兩種實現動畫的方式,一種是補間動畫(Tween Animation),另外一種是幀動畫(Frame Animation)。補間動畫能夠實現View組件的移動、放大、縮小以及漸變等效果,幀動畫則提供了一種逐幀播放圖片的動畫方式。
ide
Animation類是Android系統的一個動畫抽象類,全部其餘一些動畫類都要繼承該類中的實現方法。Animation類主要用於補間動畫效果,提供了動畫啓動、中止、重複、持續時間等方法。Animation類中的方法適用於任何一種補間動畫對象。動畫
setDuration方法:設置持續時間spa
【功能說明】該方法用於設置動畫的持續時間,以毫秒爲單位。該方法是設置補間動畫時間長度的主要方法,使用很是廣泛。code
【基本語法】public void setDuration (long durationMillis)orm
其中,參數durationMillis爲動畫的持續時間,單位爲毫秒(ms)。對象
startNow方法:馬上啓動動畫繼承
【功能說明】該方法用於啓動執行一個動畫。該方法是啓動執行動畫的主要方法,使用時須要先經過setAnimation方法爲某一個View對象設置動畫。另外,用戶在程序中也可使用View組件的startAnimation方法來啓動執行動畫。圖片
【基本語法】public void startNow ()get
public class firstActivity extends Activity { /** Called when the activity is first created. */ @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); //按鈕對象 final Animation translateAnimation=new TranslateAnimation(0,200,0,200); //移動動畫效果 btn1.setOnClickListener(new View.OnClickListener() { //設置監聽器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.setDuration(3000); //設置動畫持續時間 image.setAnimation(translateAnimation); //設置動畫效果 translateAnimation.startNow(); //啓動動畫 } }); } }
4. start方法:啓動動畫
【功能說明】該方法用於啓動執行一個動畫。該方法是啓動執行動畫的另外一個主要方法,使用時須要先經過 setAnimation方法爲某一個View 對象設置動畫。start方法區別於startNow方法的地方在於,start方法能夠用於在getTransformation方法被調用時啓動動 畫。
【基本語法】public void start ()
start方法的執行效果相似於startNow方法,這裏再也不贅述
5. cancel方法:取消動畫
【功能說明】該方法用於取消一個動畫的執行。該方法是取得一個正在執行中的動畫的主要方法。cancel方法和startNow方法結合能夠實現對 動畫執行過程的控制。須要注意的是,經過cancel方法取消的動畫,必須使用reset方法或者setAnimation方法從新設置,才能夠再次執行 動畫。
【基本語法】public void cancel ()
【實例演示】下面經過代碼來演示如何取消動畫效果執行。
public class firstActivity extends Activity { /** Called when the activity is first created. */ @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,200,0,200);//移動動畫效果 btn1.setOnClickListener(new View.OnClickListener() { //設置監聽器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.setDuration(3000); //設置動畫持續時間 image.setAnimation(translateAnimation); //設置動畫效果 translateAnimation.startNow(); //啓動動畫 } }); btn2.setOnClickListener(new View.OnClickListener() { //設置監聽器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.cancel(); //取消動畫執行 } }); } }
6. setRepeatCount方法:設置重複次數
【功能說明】該方法用於設置一個動畫效果重複執行的次數。Android系統默認每一個動畫僅執行一次,經過該方法能夠 設置動畫執行屢次。
【基本語法】public void setRepeatCount (int repeatCount)
其中,參數repeatCount爲重複執行的次數。若是設置爲n,則動畫將執行n+1次。
【實例演示】下面經過代碼來演示如何連續執行屢次動畫效果。
public class firstActivity extends Activity { /** Called when the activity is first created. */ @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,200,0,200); //移動動畫效果 btn1.setOnClickListener(new View.OnClickListener() { //設置監聽器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.setDuration(3000); //設置動畫持續時間 translateAnimation.setRepeatCount(2); //設置重複次數 image.setAnimation(translateAnimation); //設置動畫效果 translateAnimation.startNow(); //啓動動畫 } }); btn2.setOnClickListener(new View.OnClickListener() { //設置監聽器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.cancel(); //取消動畫執行 } }); } }
7. setFillEnabled方法:使能填充效果
【功能說明】該方法用於使能填充效果。當該方法設置爲true時,將執行setFillBefore和setFillAfter方法,不然將忽略setFillBefore和setFillAfter方法。
【基本語法】public void setFillEnabled (boolean fillEnabled)
其中,參數fillEnabled爲是否使能填充效果,true表示使能該效果,false表示禁用該效果。
setFillEnabled方法的示例能夠參閱setFillBefore方法和setFillAfter方法中的示例代碼
8. setFillBefore方法:設置起始填充
【功能說明】該方法用於設置一個動畫效果執行完畢後,View對象返回到起始的位置。該方法的效果是系統默認的效果。該方法的執行,須要首先經過setFillEnabled方法使能填充效果,不然設置無效。
【基本語法】public void setFillBefore (boolean fillBefore)
其中,參數fillBefore爲是否執行起始填充效果,true表示使能該效果,false表示禁用該效果。
【實例演示】下面經過代碼來演示如何讓View對象在動畫執行完畢後迴歸到起始位置。
public class firstActivity extends Activity { /** Called when the activity is first created. */ @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,200,0,200); //移動動畫效果 btn1.setOnClickListener(new View.OnClickListener() { //設置監聽器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.setDuration(3000); //設置動畫持續時間 translateAnimation.setFillBefore(true); //迴歸起始位置 translateAnimation.setFillEnabled(true); //使能填充效果 image.setAnimation(translateAnimation); //設置動畫效果 translateAnimation.startNow(); //啓動動畫 } }); btn2.setOnClickListener(new View.OnClickListener() { //設置監聽器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.cancel(); //取消動畫執行 } }); } }
在這段代碼中,首先初始化了一個移動的動畫效果translateAnimation。而後,在按鈕 監聽器中,經過 setDuration方法設置動畫持續時間,經過setFillBefore方法使對象回到起始點,並使用setFillEnabled 使能填充效果,最後使用startNow方法啓動動畫效果。讀者執行這段代碼,當點擊"執行動畫"按鈕時,圖片開始移動,當動畫結束以後,圖片將自動跳回 到起始位置
9. setFillAfter方法:設置終止填充
【功能說明】該方法用於設置一個動畫效果執行完畢後,View對象保留在終止的位置。該方法的執行,須要首先經過setFillEnabled方法使能填充效果,不然設置無效。
【基本語法】public void setFillAfter (boolean fillAfter)
其中,參數fillAfter爲是否執行終止填充效果,true表示使能該效果,false表示禁用該效果。
【實例演示】下面經過代碼來演示如何讓View對象在動畫執行完畢後保留在終止位置。
public class firstActivity extends Activity { /** Called when the activity is first created. */ @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,200,0,200); //移動動畫效果 btn1.setOnClickListener(new View.OnClickListener() { //設置監聽器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.setDuration(3000); //設置動畫持續時間 translateAnimation.setFillAfter (true); //保留在終止位置 translateAnimation.setFillEnabled(true); //使能填充效果 image.setAnimation(translateAnimation); //設置動畫效果 translateAnimation.startNow(); //啓動動畫 } }); btn2.setOnClickListener(new View.OnClickListener() { //設置監聽器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.cancel(); //取消動畫執行 } }); } }
在這段代碼中,首先初始化了一個移動的動畫效果translateAnimation。而後,在按鈕監聽器中,經過setDuration方法設置動畫持 續時間,經過setFillAfter方法使對象保留在終止點,並使用setFillEnabled使能填充效果,最後使用startNow方法啓動動畫 效果。讀者執行這段代碼,當點擊"執行動畫"按鈕時,圖片開始移動,當動畫結束以後,圖片將停留在終止位置
10. setRepeatMode方法:設置重複模式
【功能說明】該方法用於設置一個動畫效果執行的重複模式。Android系統中提供了幾種重複模式,其中最主要的即是RESTART模式和REVERSE模式。
【基本語法】public void setRepeatMode (int repeatMode)
其中,參數repeatMode爲動畫效果的重複模式,經常使用的取值以下。
RESTART:從新從頭開始執行。
REVERSE:反方向執行。
【實例演示】下面經過代碼來演示如何更改動畫路徑的方向。
public class firstActivity extends Activity { /** Called when the activity is first created. */ @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,200,0,200); //移動動畫效果 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.RESTART); //從新從頭執行 //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。而後,在按鈕監聽器中,經過setDuration方法設置 動畫持續時間,經過setRepeatCount方法設置重複次數,經過setRepeatMode設置重複模式,最後使用startNow方法啓動動畫 效果。
若是設置的重複模式爲Animation.RESTART,則表示從新從頭開始執行。讀者執行這段代碼,當點擊"執行動畫"按鈕時,圖片開始移動,當一次動畫執行結束以後,圖片將從新從頭開始執行。
若是設置的重複模式爲Animation.REVERSE,則表示反方向執行。讀者執行這段代碼,當點擊"執行動畫"按鈕時,圖片開始移動,當一次動畫執行結束以後,圖片將向反方向運動.
11. setStartOffset方法:設置啓動時間
【功能說明】該方法用於設置一個動畫執行的啓動時間,單位爲毫秒。系統默認當執行start方法後馬上執行動畫,當使用該方法設置後,將延遲必定的時間再啓動動畫。
【基本語法】public void setStartOffset (long startOffset)
其中,參數startOffset爲動畫的啓動時間,單位爲毫秒(ms)。
【實例演示】下面經過代碼來演示如何更改動畫的啓動時間。
public class firstActivity extends Activity { /** Called when the activity is first created. */ @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,200,0,200); //移動動畫效果 btn1.setOnClickListener(new View.OnClickListener() { //設置監聽器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.setDuration(3000); //設置動畫持續時間 translateAnimation.setStartOffset(3000); //設置啓動時間 image.setAnimation(translateAnimation); //設置動畫效果 translateAnimation.startNow(); //啓動動畫 } }); btn2.setOnClickListener(new View.OnClickListener() { //設置監聽器 @Override public void onClick(View v) { // TODO Auto-generated method stub translateAnimation.cancel(); //取消動畫執行 } }); } }
在這段代碼中,首先初始化了一個移動的動畫效果translateAnimation。而後,在按鈕監聽器中,經過setDuration方法設置動畫的 持續時間,經過setStartOffset方法設置動畫的啓動時間,最後使用startNow方法啓動動畫效果。讀者執行這段代碼,當點擊"執行動畫" 按鈕時,將等待3秒以後,圖片纔開始移動。