Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android動畫學習——Tween Animation

Android動畫學習——Tween Animation

編輯:關於Android編程

目錄

目錄 Android動畫學習 Tween Animation scale動畫調節尺寸 alpha動畫調節透明度 rotate動畫旋轉 translate動畫平移


Android動畫學習

android中動畫分為3種:

Tween Animation:通過對場景裡的對象不斷做圖像變換(平移、縮放、旋轉)產生的動畫效果,即是一種漸變動畫。 Frame Animation:順序播放事先做好的圖像,是一種畫面轉換動畫。 Property Animation:屬性動畫,通過動態地改變對象的屬性從而達到動畫效果,屬性動畫為API 11新特性。

這篇博客主要來分析Tween Animation的基本使用。


Tween Animation

Tween Animation有四種形式:

alpha : 漸變透明動畫效果。 scale : 漸變尺寸伸縮動畫效果。 translate : 畫面位置移動動畫效果。 rotate : 畫面旋轉動畫效果。

這四種動畫實現方式都是通過Animation類和AnimationUtils配合實現的。動畫效果可以預先配置在res/anim目錄下的xml文件中。


scale動畫–調節尺寸

scale的參數如下:

android:fromXScale:起始的X方向上相對自身的縮放比例,浮點值。例如1.0代表無變化,0.5代表起始時雖小一倍,2.0代表放大一倍。 android:toXScale:結束時X方向上相對自身的縮放比例。 android:fromYScale:起始時Y方向上相對自身的縮放比例。 android:toYScale:結束時Y方向上相對自身的縮放比例。 android:pivotX:縮放起點X軸坐標,可以是數值、百分比、百分數三種形式。(注意:起點指的是當前View左上角的坐標) android:pivotY:縮放起點Y軸坐標。

此外,Animation類是所有動畫(scale、alpha、translate、rotate)的基類,從Animation類繼承的屬性:

android:duration:動畫持續時間,以毫秒為單位。 android:fillAfter:如果設置為true,控件動畫結束時,將保持動畫最後時的狀態。 android:fillBefore:如果設置為true,控件動畫結束後,還原到開機動畫前的狀態。 android:fillEnabled:與android:fillBefore的效果相同,都是在動畫結束時將控件還原到初始狀態。 android:repeatCount:重復次數 android:repeatMode:重復類型,有reverse和restart兩個值,reverse表示倒序回放,restart表示重新放一遍。

光說不練習是不行的,這裡給出一個anim的xml文件、一個layout布局文件和一個Activity類,來練習一下scale animation的使用。

res/anim/anim_scale.xml文件如下:




res/layout/tween_animation_layout.xml文件如下:




    

        

動畫演示實現類實現如下:


import com.example.photocrop.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 TweenAnimationTest extends Activity implements OnClickListener {
    private Button alphaButton;
    private Button scaleButton;
    private Button rotateButton;
    private Button transButton;

    private ImageView animImageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.tween_animation_layout);

    initView();
    }

    private void initView() {
    animImageView = (ImageView) findViewById(R.id.anim_image);

    alphaButton = (Button) findViewById(R.id.alpha_button);
    scaleButton = (Button) findViewById(R.id.scale_button);
    rotateButton = (Button) findViewById(R.id.rotate_button);
    transButton = (Button) findViewById(R.id.trans_button);

    alphaButton.setOnClickListener(this);
    scaleButton.setOnClickListener(this);
    rotateButton.setOnClickListener(this);
    transButton.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
    case R.id.alpha_button:
        break;
    case R.id.scale_button:
        Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim_scale);
        animImageView.startAnimation(animation);
        break;
    case R.id.rotate_button:
        break;
    case R.id.trans_button:
        break;
        }
    }
}

alpha動畫–調節透明度

alpha的參數如下:

android:fromAlpha:動畫開始的透明度,從0.0~1.0,0.0表示完全透明,1.0表示完全不透明。 android:toAlpha:動畫結束的透明度,也是從0.0~1.0。

從Animation類繼承的屬性:

android:duration:動畫持續時間,以毫秒為單位。 android:fillAfter:如果設置為true,控件動畫結束時,將保持動畫最後時的狀態。 android:fillBefore:如果設置為true,控件動畫結束後,還原到開機動畫前的狀態。 android:fillEnabled:與android:fillBefore的效果相同,都是在動畫結束時將控件還原到初始狀態。 android:repeatCount:重復次數 android:repeatMode:重復類型,有reverse和restart兩個值,reverse表示倒序回放,restart表示重新放一遍。

我們以上一個TweenAnimationTest類為模板,當點擊alpha button的時候,我們觸發透明度動畫效果。

res/anim/anim_alpha.xml文件如下:




響應點擊alpha button的listener事件為:

case R.id.alpha_button:
    Animation alphaAnimation = AnimationUtils.loadAnimation(this, R.anim.anim_alpha);
    animImageView.startAnimation(alphaAnimation);
    break;

rotate動畫–旋轉

rotate參數如下:

android:fromDegrees:開始旋轉的角度位置,正數值代表順時針的角度,負數值代表逆時針旋轉的角度。 android:toDegrees:結束時旋轉到的角度位置,正數值代表順時針的角度,負數值代表逆時針旋轉的角度。 android:pivotX:旋轉起點的X軸坐標。 android:pivotY:旋轉起點的Y軸坐標。

從Animation類繼承的屬性:

android:duration:動畫持續時間,以毫秒為單位。 android:fillAfter:如果設置為true,控件動畫結束時,將保持動畫最後時的狀態。 android:fillBefore:如果設置為true,控件動畫結束後,還原到開機動畫前的狀態。 android:fillEnabled:與android:fillBefore的效果相同,都是在動畫結束時將控件還原到初始狀態。 android:repeatCount:重復次數 android:repeatMode:重復類型,有reverse和restart兩個值,reverse表示倒序回放,restart表示重新放一遍。

res/anim/anim_rotate.xml文件如下:




響應點擊alpha button的listener事件為:

case R.id.rotate_button:
    Animation rotateAnimation = AnimationUtils.loadAnimation(this, R.anim.anim_rotate);
    animImageView.startAnimation(rotateAnimation);
    break;

translate動畫–平移

translate參數:

android:fromXDelta:起始X軸坐標。 android:fromYDelta:起始Y軸坐標。 android:toXDelta:結束X軸坐標。 android:toYDelta:結束Y軸坐標。

從Animation類繼承的屬性:

android:duration:動畫持續時間,以毫秒為單位。 android:fillAfter:如果設置為true,控件動畫結束時,將保持動畫最後時的狀態。 android:fillBefore:如果設置為true,控件動畫結束後,還原到開機動畫前的狀態。 android:fillEnabled:與android:fillBefore的效果相同,都是在動畫結束時將控件還原到初始狀態。 android:repeatCount:重復次數 android:repeatMode:重復類型,有reverse和restart兩個值,reverse表示倒序回放,restart表示重新放一遍。

注意:京東splash頁面的進度條用的就是translate動畫。

res/anim/anim_rotate.xml文件如下:




響應點擊alpha button的listener事件為:

case R.id.trans_button:
    Animation transAnimation = AnimationUtils.loadAnimation(this, R.anim.anim_translate);
    animImageView.startAnimation(transAnimation);
    break;
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved