[Android] ScaleAnimation 拡大・縮小アニメーション

android.view.animation.Animationのクラスを使って、Viewを拡大したり縮小したりするScaleAnimationを簡単に組むことができます。
 

Android Studio 2.3.3
Android 7.1.1

 


ScaleAnimation

 
Animation の設定には2通りの方法があります。

 

XML attributes

 
res以下にanimというフォルダーを作成してxmlファイルを置きます。

animationの属性設定は<scale />タグを使って以下のように設定します。

  • fromXScale:開始時のxスケールサイズ(1.0で表示画像のまま)
  • toXScale:終了時のxスケールサイズ
  • fromYScale:開始時のyスケールサイズ(1.0で表示画像のまま)
  • toYScale:終了時のyスケールサイズ
  • pivotX:スケール時のx座標(50%がview中央値)
  • pivotY:スケール時のy座標(50%がview中央値)
  • fillAfter:アニメーション終了時にそのままにする(true)
  • duration:アニメーション期間[msec]

 
res\anim\scale_animation.xml

activity_main.xml

 
scalingしたいImageViewに画像を設定します。

MainActivity.java

 

 

コードで記述

 
ScaleAnimationのConstructorは幾つかありますが、今回使いやすいのはこれです。

  • ScaleAnimation
    • float fromX:開始時のxスケールサイズ(1.0で表示画像のまま)
    • float toX:終了時のxスケールサイズ
    • float fromY:開始時のyスケールサイズ(1.0で表示画像のまま)
    • float toY:終了時のyスケールサイズ
    • int pivotXType:x座標のタイプ
      • Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT
    • float pivotXVal:スケール時のx座標(0.5fがview中央値)
    • int pivotYType:y座標のタイプ
      • Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT
    • float pivotYVal:スケール時のy座標(0.5fがview中央値)
  • setRepeatCount():繰り返し回数
  • setDuration(msec):アニメーションの期間[msec]
  • startAnimation():アニメーションを開始
  • setFillAfter(true):アニメーション終了時にViewをそのままにする

pivotTypeの3種類は

  • Animation.ABSOLUTE:240 のようなpixel絶対値
  • Animation.RELATIVE_TO_SELF:自分のサイズの割合、0.5fが画像の中心
  • Animation.RELATIVE_TO_PARENT:parentサイズの割合、0.5fが画面中心

MainActivity.java

 
レイアウトはXML attributesと同じです。
 
 
関連ページ:

 
References:
ScaleAnimation
Animation Resources