Android動畫之Tween動畫實戰

來源:互聯網
上載者:User
    Android動畫分為Tween動畫和Frame動畫,上一節通過一個執行個體介紹了Frame動畫,本節將介紹Tween動畫。Tween可以把對象進行縮小、放大、旋轉和漸層等操作。    Tween動畫有四個主要的實現,下面分別說明下:1、AlphaAnimation:漸層動畫,主要控制透明度變化動畫類,常使用AlphaAnimation(float fromAlpha, float toAlpha)來構造;    fromAlpha:動畫開始時的透明度(取值範圍為0.0到1.0);    toAlpha:動畫結束時的透明度;2、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座標上的伸縮尺度;    pivotXType:X座標上的伸縮模式,取值有:Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, Animation.RELATIVE_TO_PARENT;    pivotXValue:X座標上的伸縮值;    pivotYType:Y座標上的伸縮模式,取值有:Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, Animation.RELATIVE_TO_PARENT;    pivotYValue:Y座標上的伸縮值;3、TranslateAnimation:主要控制位置變換的動畫實作類別,常使用TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)來構造;    fromXDelta:動畫開始的X座標;    toXDelta:動畫結束的X座標;    fromYDelta:動畫開始的Y座標;    toYDelta:動畫結束的Y座標;4、RotateAnimation:主要控制旋轉的動畫實作類別,常使用RotateAnimation(float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)來構造;    fromDegrees:旋轉開始角度;    toDegrees:旋轉結束角度;    pivotXType, pivotXValue, pivotYType, pivotYValue與尺度變化動畫ScaleAnimation類似;     下面以一個執行個體來進行這些動畫。    1、加入將要進行動畫變化的MM圖片(為了避免侵犯他人肖像權,這次的MM和上次的案頭背景不一樣,這個MM沒有頭像的):    2、建立Layout布局XML配置tween.xml檔案: 
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:apk="http://schemas.android.com/apk/res/android" apk:orientation="vertical" apk:layout_width="fill_parent" apk:layout_height="fill_parent">
<!-- 動畫MM -->
<ImageView apk:id="@+id/TweenMM" apk:src="@drawable/tween" apk:layout_width="wrap_content" apk:layout_height="wrap_content"/>

<!-- 動畫控制按鈕 -->
<LinearLayout apk:layout_weight="1" apk:orientation="horizontal" apk:layout_width="fill_parent" apk:layout_height="wrap_content">
<Button apk:text="ScaleAnim" apk:layout_weight="1" apk:layout_width="fill_parent" apk:layout_height="wrap_content" apk:onClick="onBtnScaleAnimClick"/>
<Button apk:text="AlphaAnim" apk:layout_weight="1" apk:layout_width="fill_parent" apk:layout_height="wrap_content" apk:onClick="onBtnAlphaAnimClick"/>
</LinearLayout>
<LinearLayout apk:layout_weight="1" apk:orientation="horizontal" apk:layout_width="fill_parent" apk:layout_height="wrap_content">
<Button apk:text="TranslateAnim" apk:layout_weight="1" apk:layout_width="wrap_content" apk:layout_height="wrap_content" apk:onClick="onBtnTranslateAnimClick"/>
<Button apk:text="RotateAnim" apk:layout_weight="1" apk:layout_width="wrap_content" apk:layout_height="wrap_content" apk:onClick="onBtnRotateAnimClick"/>
</LinearLayout>
</LinearLayout>
    一張圖片和4個按鈕,這4個按鈕就是控製圖片動畫的。3、對於每個動畫,我們都以一個XML設定檔來設定各自動畫的屬性。    AlphaAnimation(tween_alpha.xml)的設定檔內容:
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="5000" />
</set>
    android:duration指示該動畫持續的時間,以毫秒為單位。    RotateAnimation(tween_rotate.xml)的設定檔內容:
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" android:duration="5000" />
</set>
    ScaleAnimation(tween_scale.xml)的設定檔內容:
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:duration="5000" />
</set>
    TranslateAnimation(tween_translate.xml)的設定檔內容:
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="10" android:toXDelta="100" android:fromYDelta="10" android:toYDelta="100" />
</set>

4、Activity介面類:

/** * Copyright (c) 2004-2011 All Rights Reserved. */package com.aboy.android.study.animation;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.ImageView;import com.aboy.android.study.R;/** * 通過XML設定檔的方式實現Tween動畫 * * @author obullxl@gmail.com * @version $Id: TweenXMLActivity.java, v 0.1 2011-6-11 下午01:36:39 oldbulla Exp $ */public class TweenXMLActivity extends Activity {    public static final String TAG = "TweenActivity";    // 動畫圖片    private ImageView          tweenMM;    /**      * @see android.app.Activity#onCreate(android.os.Bundle)     */    public void onCreate(Bundle cycle) {        super.onCreate(cycle);        super.setContentView(R.layout.tween);        // 取得動畫圖片        this.tweenMM = (ImageView) super.findViewById(R.id.TweenMM);    }    /**     * 按鈕:尺寸變化動畫     */    public void onBtnScaleAnimClick(View view) {        // 動畫開始        this.doStartAnimation(R.anim.tween_scale);    }    /**     * 按鈕:漸層動畫     */    public void onBtnAlphaAnimClick(View view) {        // 動畫開始        this.doStartAnimation(R.anim.tween_alpha);    }    /**     * 按鈕:位置變化動畫     */    public void onBtnTranslateAnimClick(View view) {        // 動畫開始        this.doStartAnimation(R.anim.tween_translate);    }    /**     * 按鈕:旋轉動畫     */    public void onBtnRotateAnimClick(View view) {        // 動畫開始        this.doStartAnimation(R.anim.tween_rotate);    }    /**     * 開始動畫     */    private void doStartAnimation(int animId) {        // 載入動畫        Animation animation = AnimationUtils.loadAnimation(this, animId);        // 動畫開始        this.tweenMM.startAnimation(animation);    }}
    使用AnimationUtils類,可以非常方便的構造動畫類;    開始動畫,只要ImageView.startAnimation即可。 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.