Animation是Android給我們提供的一個可以實現動畫效果的API,利用Animation我們可以實現一系列的動畫效果,比如縮放動畫,透明度動畫,旋轉動畫,位移動畫,布局動畫,幀動畫等等.Android基礎動畫分為四種,分別是Tween Animation,Frame Animation,Layout Animation,Property Animation.由於動畫效果不好用圖片進行展示,大家可以自己親手試試看下效果.下面給出前三種簡單的示例代碼,幫助大家進行簡單的動畫入門.
(1) Tween Animation (變換動畫)
Tween Animation按效果可以分為四種:Alpha,Scale,Translate,Rotate,它們有一下共同屬性:
1. Duration: 動畫持續時間(毫秒);
2. fillAfter: 設置為True,動畫轉換在動畫結束后被應用;
3. fillBefore: 設置為True,動畫轉換在動畫開始前被應用;
4. interpolator: 動畫插入器(加速,減速插入器);
5. repeatCount: 動畫重復次數;
6. repeatMode: 正序重復/倒序重復
7. startOffSet: 動畫之間的時間間隔
① Alpha (漸變透明度動畫)
MainActivity.java主要代碼:
ImageView image = (ImageView) findViewById(id.image); Animation loadAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha); image.startAnimation(loadAnimation);
alpha.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android:duration="1000" android:fromAlpha="0.1" android:toAlpha="1.0" > </alpha> </set>
② Scale (漸變尺寸縮放動畫)
MainActivity.java主要代碼:
ImageView image = (ImageView) findViewById(id.image); Animation loadAnimation = AnimationUtils.loadAnimation(this, R.anim.scale); image.startAnimation(loadAnimation);
scale.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <scale android:duration="2000" android:fillAfter="false" android:fromXScale="0.0" android:fromYScale="0.0" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:pivotX="50%" android:pivotY="50%" android:toXScale="1.0" android:toYScale="1.0" /> </set>
③ Translate (位置移動動畫)
MainActivity.java主要代碼:
ImageView image = (ImageView) findViewById(id.image); Animation loadAnimationloadAnimation = AnimationUtils.loadAnimation(this, R.anim.translate); image.startAnimation(loadAnimation);
translate.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="1000" android:fromXDelta="10" android:fromYDelta="10" android:toXDelta="100" android:toYDelta="100" /> </set>
④ Rotate (旋轉動畫)
MainActivity.java主要代碼:
ImageView image = (ImageView) findViewById(id.image); Animation loadAnimation loadAnimation = AnimationUtils.loadAnimation(this, R.anim.rotate); image.startAnimation(loadAnimation);
rotate.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <rotate android:duration="1000" android:fromDegrees="0" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:pivotX="50%" android:pivotY="50%" android:toDegrees="+360" /> </set>
(2) Layout Animation (布局動畫)
MainActivity.java主要代碼:
Intent intent=new Intent(MainActivity.this,ListActivity.class); startActivity(intent);
ListActivity.java代碼:
package com.example.caobotao.learnanimation; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.animation.AnimationUtils; import android.view.animation.LayoutAnimationController; import android.widget.ArrayAdapter; import android.widget.ListView; public class ListActivity extends Activity{ private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.list_layout); listView=(ListView) findViewById(R.id.listView); List<String>list=new ArrayList<String>(); for(int i=0;i<20;i++) { list.add("示例"+i); } ArrayAdapter<String>adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list); listView.setAdapter(adapter); LayoutAnimationController lac=new LayoutAnimationController(AnimationUtils.loadAnimation(this, R.anim.zoom_in)); lac.setOrder(LayoutAnimationController.ORDER_NORMAL); listView.setLayoutAnimation(lac); listView.startLayoutAnimation(); } }
zoom_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" > <scale android:duration="1000" android:fromXScale="0.1" android:fromYScale="0.1" android:pivotX="50%" android:pivotY="50%" android:toXScale="1.0" android:toYScale="1.0" /> <alpha android:duration="1000" android:fromAlpha="0" android:toAlpha="1.0" /> </set>
(3) Frame Animation (幀動畫)
MainActivity.java主要代碼:
ImageView image = (ImageView) findViewById(id.image); image.setImageResource(R.drawable.anim_list); AnimationDrawable animationDrawable = (AnimationDrawable) image.getDrawable(); animationDrawable.start();
anim_list.xml
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@mipmap/one" android:duration="500"/> <item android:drawable="@mipmap/two" android:duration="500"/> <item android:drawable="@mipmap/three" android:duration="500"/> <item android:drawable="@mipmap/four" android:duration="500"/> <item android:drawable="@mipmap/five" android:duration="500"/> <item android:drawable="@mipmap/six" android:duration="500"/> </animation-list>