1. 程式人生 > >Animation之ScaleAnimation(縮放動畫)

Animation之ScaleAnimation(縮放動畫)

ScaleAnimation(縮放動畫)

縮放的意思就是對圖片或者文字等進行擴大或縮小。下面開始編寫程式碼,相關重要屬性引數的解釋都在程式碼中。

1、編寫main.xml檔案。

<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <ImageView
        android:id="@+id/image"
        android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/car_one1"/>

</RelativeLayout>
2、編寫MainActivity.java檔案。
package com.example.dell.bitmapproject;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.ScaleAnimation;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
    private ImageView image;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        image =(ImageView)findViewById(R.id.image);
        image.setOnClickListener(new OnClickListenerImpl());
    }
    private class OnClickListenerImpl implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            /*
                AnimationSet相當於一個動畫的集合,true表示使用Animation的interpolator
                false則是使用自己的。
                Interpolator 被用來修飾動畫效果,定義動畫的變化率,可以使存在的動畫效果
                accelerated(加速),decelerated(減速),repeated(重複),bounced(彈跳)等。
             */

            AnimationSet animationSet = new AnimationSet(true);
            /*
                引數解釋:
                    第一個引數:X軸水平縮放起始位置的大小(fromX)。1代表正常大小
                    第二個引數:X軸水平縮放完了之後(toX)的大小,0代表完全消失了
                    第三個引數:Y軸垂直縮放起始時的大小(fromY)
                    第四個引數:Y軸垂直縮放結束後的大小(toY)
                    第五個引數:pivotXType為動畫在X軸相對於物件位置型別
                    第六個引數:pivotXValue為動畫相對於物件的X座標的開始位置
                    第七個引數:pivotXType為動畫在Y軸相對於物件位置型別
                    第八個引數:pivotYValue為動畫相對於物件的Y座標的開始位置

                   (第五個引數,第六個引數),(第七個引數,第八個引數)是用來指定縮放的中心點
                    0.5f代表從中心縮放
             */
            ScaleAnimation scaleAnimation = new ScaleAnimation(1,0.5f,1,0.5f,
                    Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
            //3秒完成動畫
            scaleAnimation.setDuration(2000);
            //將AlphaAnimation這個已經設定好的動畫新增到 AnimationSet中
            animationSet.addAnimation(scaleAnimation);
            //啟動動畫
            MainActivity.this.image.startAnimation(animationSet);
        }
    }
}
其實關於動畫的設定並不難理解,只是一些屬性的引數不好記而已,多用幾遍就好了。