動(dòng)畫(huà)在Android中可以有許多方式。在本章中,我們將討論一個(gè)簡(jiǎn)單的和廣泛使用的動(dòng)畫(huà)制作 - 所謂的補(bǔ)間動(dòng)畫(huà)方式。
補(bǔ)間動(dòng)畫(huà)需要一些參數(shù),如初始值,終值,大小,持續(xù)時(shí)間,旋轉(zhuǎn)角度等,并對(duì)該對(duì)象執(zhí)行所需的動(dòng)畫(huà)。它可以應(yīng)用到任何類(lèi)型的對(duì)象。因此,為了利用這一點(diǎn),Android已經(jīng)為我們提供了一個(gè)類(lèi)叫做 Animation.
為了在android系統(tǒng)進(jìn)行顯示動(dòng)畫(huà),我們將調(diào)用AnimationUtils 類(lèi)的靜態(tài)函數(shù) loadAnimation()。我們將接受它在動(dòng)畫(huà)對(duì)象的實(shí)例。它的語(yǔ)法如下:
Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.myanimation);
注意第二個(gè)參數(shù)。它是動(dòng)畫(huà) xml文件的名稱(chēng)。必須創(chuàng)建一個(gè)res目錄下名為anim的文件夾,并在anim文件夾中創(chuàng)建XML文件。
這個(gè)動(dòng)畫(huà) animation 類(lèi)有下面列出許多有用的功能:
Sr.No | 方法 & 描述 |
---|---|
1 |
start() 此方法開(kāi)始動(dòng)畫(huà) |
2 |
setDuration(long duration) 此方法設(shè)置動(dòng)畫(huà)的持續(xù)時(shí)間 |
3 |
getDuration() 此方法獲得其通過(guò)上述方法設(shè)定的持續(xù)時(shí)間 |
4 |
end() 此方法結(jié)束動(dòng)畫(huà) |
5 |
cancel() 這個(gè)方法取消動(dòng)畫(huà) |
為了應(yīng)用這個(gè)動(dòng)畫(huà)到對(duì)象,我們將只調(diào)用對(duì)象的startAnimation()方法。其語(yǔ)法是:
ImageView image1 = (ImageView)findViewById(R.id.imageView1); image.startAnimation(animation);
為了在動(dòng)畫(huà)進(jìn)行縮放,下創(chuàng)建anim文件夾中XML文件在res目錄下,并把這個(gè)代碼的文件中。
<set xmlns:android="http://schemas.android.com/apk/res/android"> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:fromXScale="0.5" android:toXScale="3.0" android:fromYScale="0.5" android:toYScale="3.0" android:duration="5000" android:pivotX="50%" android:pivotY="50%" > </scale> </set>
參數(shù) fromXScale、fromYScale 限定開(kāi)始點(diǎn)和參數(shù) toXScale、toYScale定義結(jié)束點(diǎn)。duration 定義了動(dòng)畫(huà)的時(shí)間和pivotX,pivotYdefines中心從其中動(dòng)畫(huà)將開(kāi)始。
參數(shù) fromXScale、fromYScale限定開(kāi)始點(diǎn),參數(shù) toXScale、toYScale 定義結(jié)束點(diǎn)。duration 定義了動(dòng)畫(huà)的時(shí)間 pivotX,pivotY 定義的中心從其中動(dòng)畫(huà)將開(kāi)始。
為了試驗(yàn)這個(gè)例子,需要在模擬器或?qū)嶋H設(shè)備上運(yùn)行。
Steps | 描述 |
---|---|
1 | 使用Android Studio創(chuàng)建Android應(yīng)用程序,并將其命名為Animation ,創(chuàng)建這個(gè)項(xiàng)目時(shí)確保目標(biāo)SDK編譯在Android SDK的最新版本并使用更高級(jí)別的API |
2 | 修改src/MainActivity.java文件中添加動(dòng)畫(huà)代碼 |
3 | 修改所需的布局XML文件res/layout/activity_main.xml l添加GUI組件 |
4 | res目錄下新建一個(gè)文件夾,并將其命名為anim。通過(guò)訪問(wèn)確認(rèn):res/anim |
5 | 創(chuàng)建新的Android XML文件,必須創(chuàng)建下面列出了三種不同的文件 |
6 | 創(chuàng)建myanimation.xml,clockwise.xml,fade.xml文件并添加X(jué)ML代碼 |
7 | 修改 res/values/string.xml 文件,并添加必要的字符串組成部分 |
8 | 修改res/menu/main.xml文件,并添加必要的菜單組件 |
9 | 運(yùn)行應(yīng)用程序并選擇要運(yùn)行的Android設(shè)備,并在其上安裝的應(yīng)用和驗(yàn)證結(jié)果。 |
這里是修改后的代碼 src/com.yii bai.animation/MainActivity.java.
package com.example.animation; import com.example.animation.R; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.MenuItem; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); switch(item.getItemId()) { case R.id.zoomInOut: ImageView image = (ImageView)findViewById(R.id.imageView1); Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.myanimation); image.startAnimation