Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> Android中使用animation的方法

Android中使用animation的方法

編輯:初級開發

在android中,分別可以在XML中定義Animation,也可以在程序代碼中定義,

下面的小例子是利用RotateAnimation簡單展示一下兩種方法的用法,對於其他動畫,如ScaleAnimation,AlphaAnimation,原理是一樣的。

方法一:在XML中定義動畫:

< ?XML version="1.0" encoding="utf-8"?>

< set XMLns:android="http://schemas.android.com/apk/res/android">

< rotate

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

android:fromDegrees="0"

android:toDegrees="+360"

android:duration="3000" />

< !-- rotate 旋轉動畫效果

屬性:interpolator 指定一個動畫的插入器,用來控制動畫的速度變化

fromDegrees 屬性為動畫起始時物件的角度

toDegrees 屬性為動畫結束時物件旋轉的角度,+代表順時針

duration 屬性為動畫持續時間,以毫秒為單位

-->

< /set>

使用動畫的Java代碼,程序的效果是點擊按鈕,TextVIEw旋轉一周:

package com.ray.animation;

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.TextVIEw;

public class TestAnimation extends Activity implements OnClickListener{

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentVIEw(R.layout.main);

Button btn = (Button)findVIEwById(R.id.Button01);

btn.setOnClickListener(this);

}

@Override

public void onClick(VIEw v) {

Animation anim = AnimationUtils.loadAnimation(this, R.anim.my_rotate_action);

findViewById(R.id.TextVIEw01).startAnimation(anim);

}

}

方法二:直接在代碼中定義動畫(效果跟方法一類似):

package com.ray.animation;

import android.app.Activity;

import android.os.Bundle;

import android.view.VIEw;

import android.view.VIEw.OnClickListener;

import android.vIEw.animation.AccelerateDecelerateInterpolator;

import android.vIEw.animation.Animation;

import android.vIEw.animation.RotateAnimation;

import android.widget.Button;

public class TestAnimation extends Activity implements OnClickListener{

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentVIEw(R.layout.main);

Button btn = (Button)findVIEwById(R.id.Button);

btn.setOnClickListener(this);

}

public void onClick(VIEw v) {

Animation anim = null;

anim = new RotateAnimation(0.0f,+360.0f);

anim.setInterpolator(new AccelerateDecelerateInterpolator());

anim.setDuration(3000);

findViewById(R.id.TextVIEw01).startAnimation(anim);

}

}

補充說明:

android動畫解析 --JavaCode

AlphaAnimation

① AlphaAnimation類對象定義

private AlphaAnimation myAnimation_Alpha;

復制代碼

② AlphaAnimation類對象構造

AlphaAnimation(float fromAlpha, float toAlpha)

//第一個參數fromAlpha為 動畫開始時候透明度

//第二個參數toAlpha為 動畫結束時候透明度

myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);

//說明:

// 0.0表示完全透明

// 1.0表示完全不透明

復制代碼

③ 設置動畫持續時間

myAnimation_Alpha.setDuration(5000);

//設置時間持續時間為 5000毫秒

復制代碼

ScaleAnimation

① ScaleAnimation類對象定義

private AlphaAnimation myAnimation_Alpha;

復制代碼

② ScaleAnimation類對象構造

ScaleAnimation(float fromX, float toX, float fromY, float toY,

int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)

//第一個參數fromX為動畫起始時 X坐標上的伸縮尺寸

//第二個參數toX為動畫結束時 X坐標上的伸縮尺寸

//第三個參數fromY為動畫起始時Y坐標上的伸縮尺寸

//第四個參數toY為動畫結束時Y坐標上的伸縮尺寸

/*說明:

以上四種屬性值

0.0表示收縮到沒有

1.0表示正常無伸縮

值小於1.0表示收縮

值大於1.0表示放大

*/

//第五個參數pivotXType為動畫在X軸相對於物件位置類型

//第六個參數pivotXValue為動畫相對於物件的X坐標的開始位置

//第七個參數pivotXType為動畫在Y軸相對於物件位置類型

//第八個參數pivotYValue為動畫相對於物件的Y坐標的開始位置

myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,

Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

復制代碼

③ 設置動畫持續時間

myAnimation_Scale.setDuration(700);

//設置時間持續時間為 700毫秒

復制代碼

TranslateAnimation

① TranslateAnimation類對象定義

private AlphaAnimation myAnimation_Alpha;

復制代碼

② TranslateAnimation類對象構造

TranslateAnimation(float fromXDelta, float toXDelta,

float fromYDelta, float toYDelta)

//第一個參數fromXDelta為動畫起始時 X坐標上的移動位置

//第二個參數toXDelta為動畫結束時 X坐標上的移動位置

//第三個參數fromYDelta為動畫起始時Y坐標上的移動位置

//第四個參數toYDelta為動畫結束時Y坐標上的移動位置

復制代碼

③ 設置動畫持續時間

myAnimation_Translate.setDuration(2000);

//設置時間持續時間為 2000毫秒

復制代碼

RotateAnimation

①  RotateAnimation類對象定義

private AlphaAnimation myAnimation_Alpha;

復制代碼

②  RotateAnimation類對象構造

RotateAnimation(float fromDegrees, float toDegrees,

int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)

//第一個參數fromDegrees為動畫起始時的旋轉角度

//第二個參數toDegrees為動畫旋轉到的角度

//第三個參數pivotXType為動畫在X軸相對於物件位置類型

//第四個參數pivotXValue為動畫相對於物件的X坐標的開始位置

//第五個參數pivotXType為動畫在Y軸相對於物件位置類型

//第六個參數pivotYValue為動畫相對於物件的Y坐標的開始位置

myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f,

Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);

復制代碼

③  設置動畫持續時間

myAnimation_Rotate.setDuration(3000);

//設置時間持續時間為 3000毫秒

復制代碼

如何使用 Java 代碼中的動畫效果

使用從 View 父類繼承過來的方法 startAnimation ()來為 View 或是子類 VIEw 等等添加一個動畫效果

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved