??Android中有四大動(dòng)畫,它們分別是:變換動(dòng)畫(Tween Animation),幀動(dòng)畫(frame Animation),布局動(dòng)畫(layout Animation),屬性動(dòng)畫(Property Animation )。今天我在這里簡單的說下變換動(dòng)畫。
Animation的通用屬性
| xml屬性 | java方法 | 解釋 |
|---|---|---|
| android:detachWallpaper | setDetachWallpaper(boolean) | 是否在在壁紙上運(yùn)行 |
| android:duration | setDuration(long) | 動(dòng)畫持續(xù)時(shí)間,單位為毫秒 |
| android:fillAfter | setFillAfter(boolean) | 控件結(jié)束后是否保持動(dòng)畫最后的狀態(tài) |
| android:fillBefore | setFillBefore(boolean) | 控件結(jié)束后是否還原到開始動(dòng)畫的狀態(tài) |
| android:fillEnabled | setFillEnabled(boolean) | 與android:fillBefore效果相同 |
| android:interpolator | setInterpolator(Interpolator) | 設(shè)定插值器(指定的動(dòng)畫效果,譬如回彈等) |
| android:repeatCount | setRepeatCount(int) | 動(dòng)畫重復(fù)次數(shù) |
| android:repeatMode | setRepeatMode(int) | 重復(fù)類型有兩個(gè)值,reverse表示倒序回放,restart表示從頭播放 |
| android:startOffset | setStartOffset(long) | 調(diào)用start函數(shù)之后等待開始運(yùn)行的時(shí)間,單位為毫秒 |
| android:zAdjustment | setZAdjustment(int) | 表示被設(shè)置動(dòng)畫的內(nèi)容運(yùn)行時(shí)在Z軸上的位置默認(rèn)為normal |
??變換動(dòng)畫中分為4種:透明度動(dòng)畫,縮放動(dòng)畫,旋轉(zhuǎn)動(dòng)畫,位移動(dòng)畫。今天我在這里會(huì)一一說明變換動(dòng)畫的四種動(dòng)畫的使用方法.
1.透明度動(dòng)畫
(1). 屬性
| xml屬性 | java方法 | 解釋 |
|---|---|---|
| android:fromAlpha | AplphaAnimation(float fromAlpah,...) | 動(dòng)畫開始的透明度(0.0,到1.0,0.0是全透明,1.0是不透明) |
| android:toAlppha | AlphaAnimation(..., float toAlpha) | 動(dòng)畫結(jié)束的透明度 |
(2). 用法
??我們現(xiàn)在res文件下新建一個(gè)anim文件夾,用來存放動(dòng)畫的xml文件。
anim下的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"
/>
</set>
布局文件xml代碼
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.Tween_Animation.Alpha_MainActivity" >
<Button
android:id="@+id/button_scale"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_stringScaleAnimation" />
<LinearLayout
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageview_scale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />
</LinearLayout>
</LinearLayout>
activity中的JAVA代碼
package com.example.Tween_Animation;
import com.example.androidanimation.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
public class Alpha_MainActivity extends Activity implements OnClickListener{
private Button button = null;
private ImageView imageview = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageview = (ImageView) findViewById(R.id.imageview_scale);
button = (Button) findViewById(R.id.button_scale);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//通過AnimationUtils里面的一個(gè)靜態(tài)方法--loadAnimation用來綁定這個(gè)動(dòng)畫變換的xml文件
Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha);
//imageview加載animation對(duì)象
imageview.startAnimation(animation);
}
}
2.縮放動(dòng)畫
(1). 屬性
| xml屬性 | JAVA方法 | 解釋 |
|---|---|---|
| android:fromXScale | ScaleAnimation(float fromX, …) | 初始X軸縮放比例,1.0表示無變化 |
| android:toXScale | ScaleAnimation(…, float toX, …) | 結(jié)束X軸縮放比例 |
| android:fromYScale | ScaleAnimation(…, float fromY, …) | 初始Y軸縮放比例 |
| android:toYScale | ScaleAnimation(…, float toY, …) | 結(jié)束Y軸縮放比例 |
| android:pivotX | ScaleAnimation(…, float pivotX, …) | 縮放起點(diǎn)X軸坐標(biāo)(數(shù)值、百分?jǐn)?shù)、百分?jǐn)?shù)p,譬如50表示以當(dāng)前View左上角坐標(biāo)加50px為初始點(diǎn)、50%表示以當(dāng)前View的左上角加上當(dāng)前View寬高的50%做為初始點(diǎn)、50%p表示以當(dāng)前View的左上角加上父控件寬高的50%做為初始點(diǎn)) |
| ScaleAnimation(…, float pivotX, …) | ScaleAnimation(…, float pivotY) | 縮放七點(diǎn)Y軸坐標(biāo),同上規(guī)律 |
(2). 用法
A.anim下的xml代碼
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:duration="5000"
android:fromXScale="0.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:toXScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
/>
</set>
B.布局文件xml代碼
??xml代碼:同上的布局代碼
C.activity的代碼
package com.example.Tween_Animation;
import com.example.androidanimation.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
public class Scale_MainActivity extends Activity implements OnClickListener{
private Button button = null;
private ImageView imageview = null;
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button_scale);
imageview = (ImageView) findViewById(R.id.imageview_scale);
button.setOnClickListener(this);
}
public void onClick(View v) {
Animation animation = AnimationUtils.loadAnimation(this, R.anim.scale);
imageview.startAnimation(animation);
}
}
3.旋轉(zhuǎn)動(dòng)畫
(1). 屬性
| xml屬性 | JAVA方法 | 解釋 |
|---|---|---|
| android:fromDegrees | RotateAnimation(float fromDegrees, …) | 旋轉(zhuǎn)開始角度,正代表順時(shí)針度數(shù),負(fù)代表逆時(shí)針度數(shù) |
| android:toDegrees | RotateAnimation(…, float toDegrees, …) | 旋轉(zhuǎn)結(jié)束角度,正代表順時(shí)針度數(shù),負(fù)代表逆時(shí)針度數(shù) |
| android:pivotX | RotateAnimation(…, float pivotX, …) | 縮放起點(diǎn)X坐標(biāo)(數(shù)值、百分?jǐn)?shù)、百分?jǐn)?shù)p,譬如50表示以當(dāng)前View左上角坐標(biāo)加50px為初始點(diǎn)、50%表示以當(dāng)前View的左上角加上當(dāng)前View寬高的50%做為初始點(diǎn)、50%p表示以當(dāng)前View的左上角加上父控件寬高的50%做為初始點(diǎn)) |
| android:pivotY | RotateAnimation(…, float pivotY) | 縮放起點(diǎn)Y坐標(biāo),同上規(guī)律 |
(2). 用法
A. anim下的xml代碼
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<rotate
android:repeatCount="5"
android:duration="1000"
android:fromDegrees="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="+360" />
</set>
B.布局文件xml代碼
??xml代碼:同上的布局代碼
C. activity的代碼
package com.example.Tween_Animation;
import com.example.androidanimation.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
public class Rotate_MainActivity extends Activity implements OnClickListener{
private Button button = null;
private ImageView imageview = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageview = (ImageView) findViewById(R.id.imageview_scale);
button = (Button) findViewById(R.id.button_scale);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//通過AnimationUtils里面的一個(gè)靜態(tài)方法--loadAnimation用來綁定這個(gè)動(dòng)畫變換的xml文件
Animation animation = AnimationUtils.loadAnimation(this, R.anim.rotate);
//imageview加載animation對(duì)象
imageview.startAnimation(animation);
}
}
4.位移動(dòng)畫
(1). 屬性
| xml屬性 | JAVA方法 | 解釋 |
|---|---|---|
| android:fromXDelta | TranslateAnimation(float fromXDelta, …) | 起始點(diǎn)X軸坐標(biāo)(數(shù)值、百分?jǐn)?shù)、百分?jǐn)?shù)p,譬如50表示以當(dāng)前View左上角坐標(biāo)加50px為初始點(diǎn)、50%表示以當(dāng)前View的左上角加上當(dāng)前View寬高的50%做為初始點(diǎn)、50%p表示以當(dāng)前View的左上角加上父控件寬高的50%做為初始點(diǎn)) |
| android:fromYDelta | TranslateAnimation(…, float fromYDelta, …) | 起始點(diǎn)Y軸從標(biāo),同上規(guī)律 |
| android:toXDelta | TranslateAnimation(…, float toXDelta, …) | 結(jié)束點(diǎn)X軸坐標(biāo),同上規(guī)律 |
| android:toYDelta | TranslateAnimation(…, float toYDelta) | 結(jié)束點(diǎn)Y軸坐標(biāo),同上規(guī)律 |
(2). 用法
A.anim下的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="1000"
android:toYDelta="1000" />
</set>
B.布局文件xml代碼
??xml代碼:同上的布局代碼
C. activity的代碼
package com.example.Tween_Animation;
import com.example.androidanimation.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
public class Translate_MainActivity extends Activity implements OnClickListener{
private Button button = null;
private ImageView imageview = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageview = (ImageView) findViewById(R.id.imageview_scale);
button = (Button) findViewById(R.id.button_scale);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//通過AnimationUtils里面的一個(gè)靜態(tài)方法--loadAnimation用來綁定這個(gè)動(dòng)畫變換的xml文件
Animation animation = AnimationUtils.loadAnimation(this, R.anim.translate);
//imageview加載animation對(duì)象
imageview.startAnimation(animation);
}
}
??以上就是變換動(dòng)畫中的四種情況。