アニメーションリソースは2種類のアニメーションを定義できる。
- Property Animation プロパティアニメーション
- Animator(Reference)を使用して、一定時間にわたってオブジェクトのプロパティ値を変更するアニメーションを作成する。
- View Animation Viewアニメーション
Viewアニメーションフレームワークでは2種類のアニメーションができる。- Tween animation トゥイーンアニメーション(訳注:tween=between)
Animation(Reference)を使用して1つのイメージに対して一連の変換を実行する。(訳注:Duration(ミリ秒)の間でalpha(透明度), rotate(回転), scale(縮尺), translate(座標)を徐々に変化する。見た目のみでプロパティは変化しない。) - Frame animation フレームアニメーション
AnimatinDrawable(Reference)を使用して画像を順番に表示するアニメーションを作成する。
- Tween animation トゥイーンアニメーション(訳注:tween=between)
プロパティアニメーション
XMLで定義されたアニメーションは、ターゲットオブジェクトの背景色や透明度などプロパティを一定の時間にわたって変化する。
file location
res/animator/filename.xml
ファイル名はリソースIDとして使用される。
compiled resource datatype コンパイル済みリソースクラス
リソースポインターは、ValueAnimator(Reference)、ObjectAnimator(Reference)、AnimatorSet(Reference)のいずれか
resource reference 参照方法
JavaまたはKotlinコード内:R.animator.filename
XML内:@[package:]animator/filename
syntax 構文
<set android:ordering=["together" | "sequentially"]> <objectAnimator android:propertyName="string" android:duration="int" android:valueFrom="float | int | color" android:valueTo="float | int | color" android:startOffset="int" android:repeatCount="int" android:repeatMode=["repeat" | "reverse"] android:valueType=["intType" | "floatType"]/> <animator android:duration="int" android:valueFrom="float | int | color" android:valueTo="float | int | color" android:startOffset="int" android:repeatCount="int" android:repeatMode=["repeat" | "reverse"] android:valueType=["intType" | "floatType"]/> <set> ... </set> </set>
ファイルには<set>、<objectAnimator>、<valueAnimator>のいずれか1つのルートタグが必要。
<set>タグはアニメーションタグをグループ化し、さらに<set>タグは入れ子にできる。
elements
- <set>
- 他のアニメーションタグ(<objectAnimator>、<valueAnimator>、<set>)のコンテナで、AnimatorSet(Reference)を表す。
<set>タグをネストし、アニメーションをさらにグループ化できる。
各<set>は独自の順序属性値を定義できる。
属性一覧android:ordering
このセットのアニメーションの再生順序を指定します。Value Description sequentially 定義された順にアニメーションを再生する。 together(default) 同時にアニメーションを再生する。
- 他のアニメーションタグ(<objectAnimator>、<valueAnimator>、<set>)のコンテナで、AnimatorSet(Reference)を表す。
- <objetAnimator>
- 一定時間オブジェクトの特定のプロパティをアニメーションする、ObjectAnimator(Reference)を表す。
属性一覧android:propertyName
文字列。必須属性。
属性値と同じ名前 の オブジェクトのプロパティ をアニメーション化する。
例えばViewオブジェクトの"alpha"や"backgroundColor"。
ただし、objectAnimatorタグではtarget属性を指定できないため、XMLからどのオブジェクトをアニメーションするか設定できない。
アニメーションリソースXMLをinflateし、#loadAnimator()および#setTarget()を呼び出しターゲットとなるオブジェクトとそのプロパティを設定する。android:valueTo
float、int、color。必須属性。
アニメーション化されたプロパティの最終値。
色の指定は6桁の16進数(例えば#333333)で表す。android:valueFrom
float、int、color。省略可。
アニメーション化されたプロパティの開始値。省略した場合、プロパティからgetメソッドで取得した値が使用される。
色の指定は6桁の16進数(例えば#333333)で表す。android:duration
int。省略可。
アニメーションの時間(ミリ秒)。デフォルト値は300ms。android:startOffset
int。省略可。
アニメーションが#start()された後に遅延する時間(ミリ秒)。android:repeatCount
int。省略可。
アニメーションを繰り返す回数。"1"なら1回繰り返すため計2回再生され、"-1"で無限に繰り返す。
デフォルト値は"0"で、アニメーションは繰り返さない。android:repeatMode
int。訳注:省略可否不明。
アニメーションの最後にどのように振る舞うか指定する。この指定を有効にするにはandroid:repeatCountを"-1"または"1"以上に設定しなければならない。"reverse"が設定されると折り返し再生される。"repeat"が設定されるとアニメーションは最初から再生される。android:valueType
キーワード。色を設定する場合、この属性を指定しない。アニメーションフレームワークは自動的に色の値を処理する。Value Description intType アニメーションする値がint。 floatType(default) アニメーションする値がfloat。
- 一定時間オブジェクトの特定のプロパティをアニメーションする、ObjectAnimator(Reference)を表す。
- <animator>
- 指定した時間をかけてアニメーションする。ValueAnimator(Reference)を表す。
訳注:ValueAnimator.AnimatorUpdateListenerによって変化する値を処理する。どう使うかは自由。
属性一覧android:valueTo
float、int、color。必須属性。
アニメーションの最終値。
色の指定は6桁の16進数(例えば#333333)で表す。android:valueFrom
float、int、color。必須属性。
アニメーションの開始値。
色の指定は6桁の16進数(例えば#333333)で表す。android:duration
int。省略可。
アニメーションの時間(ミリ秒)。デフォルト値は300ms。android:startOffset
int。省略可。
アニメーションが#start()された後に遅延する時間(ミリ秒)。android:repeatCount
int。省略可。
アニメーションを繰り返す回数。"1"なら1回繰り返すため計2回再生され、"-1"で無限に繰り返す。
デフォルト値は"0"で、アニメーションは繰り返さない。android:repeatMode
int。訳注:省略可否不明。
アニメーションの最後にどのように振る舞うか指定する。この指定を有効にするにはandroid:repeatCountを"-1"または"1"以上に設定しなければならない。"reverse"が設定されると折り返し再生される。"repeat"が設定されるとアニメーションは最初から再生される。android:valueType
キーワード。色を設定する場合、この属性を指定しない。アニメーションフレームワークは自動的に色の値を処理する。Value Description intType アニメーションする値がint。 floatType(default) アニメーションする値がfloat。
- 指定した時間をかけてアニメーションする。ValueAnimator(Reference)を表す。
example
XMLファイルはres/animator/property_animator.xmlに保存する。
<set android:ordering="sequentially"> <set> <objectAnimator android:propertyName="x" android:duration="500" android:valueTo="400" android:valueType="intType"/> <objectAnimator android:propertyName="y" android:duration="500" android:valueTo="300" android:valueType="intType"/> </set> <objectAnimator android:propertyName="alpha" android:duration="500" android:valueTo="1f"/> </set>
このアニメーションを実行するには、AnimatorSetオブジェクトとしてXMLをinflateし、開始する前に全てのアニメーションのターゲットオブジェクトを設定しなければならない。
#setTarget()を呼び出すと、AnimatorSetの全ての子に同じターゲットオブジェクトを設定する。
以下にその方法を示す。
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext, R.animator.property_animator); set.setTarget(myObject); set.start();
see also
トゥイーンアニメーション - Viewアニメーション
アニメーションはXMLで定義し、グラフィックの回転、フェード、移動、ストレッチなどを実行する。
file location
res/anim/filename.xml
ファイル名はリソースIDとして使用される。
compiled resource datatype コンパイル済みリソースクラス
リソースポインターは、Animation(Reference)
resource reference 参照方法
JavaまたはKotlinコード内:R.anim.filename
XML内:@[package:]anim/filename
syntax 構文
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@[package:]anim/interpolator_resource" android:shareInterpolator=["true" | "false"] > <alpha android:fromAlpha="float" android:toAlpha="float" /> <scale android:fromXScale="float" android:toXScale="float" android:fromYScale="float" android:toYScale="float" android:pivotX="float" android:pivotY="float" /> <translate android:fromXDelta="float" android:toXDelta="float" android:fromYDelta="float" android:toYDelta="float" /> <rotate android:fromDegrees="float" android:toDegrees="float" android:pivotX="float" android:pivotY="float" /> <set> ... </set> </set>
ファイルには<set>、<alpha>、<scale>、<translate>、<rotate>のいずれか1つのルートタグが必要。
<set>タグはアニメーションタグをグループ化し、さらに<set>タグは入れ子にできる。
elements
- <set>
- 他のアニメーションタグ(<alpha>、<scale>、<translate>、<rotate>、<set>)のコンテナで、AnimationSet(Reference)を表す。
<set>タグをネストし、アニメーションをさらにグループ化できる。
属性一覧android:interpolator
アニメーションに適用するInterpolatorリソース(Reference)を指定する。(訳注:アニメーション速度を調節するためのリソース)
Interpolatorクラスではなくリソースへの参照を指定する必要がある。
Interpolatorリソースは、プラットフォームから提供される既定の物以外に、独自のInterpolatorリソースを定義できる。詳細は後述する。android:shareInterpolator
Bool値。全ての子要素に同じInterpolatorリソースを適用する場合、trueを指定する。
- 他のアニメーションタグ(<alpha>、<scale>、<translate>、<rotate>、<set>)のコンテナで、AnimationSet(Reference)を表す。
- <alpha>
- フェードインまたはフェードアウトアニメーションでAlphaAnimation(Reference)を表す
属性一覧android:fromAlpha
float。0.0が透明で1.0が不透明である不透明度の開始オフセット値。android:toAlpha
float。不透明度の最終オフセット値。<alpha>の他の属性値については、AnimationクラスのReferenceを参照すること。(Animationオブジェクトの全てのXML属性を継承している)
- フェードインまたはフェードアウトアニメーションでAlphaAnimation(Reference)を表す
- <scale>
- アニメーションのリサイズ。pivotXとpivotYを指定することで、イメージの中心を外側あるいは内側に指定できる。例えば、値が0,0(左上)の場合、右下へと拡大する。ScaleAnimation(Reference)を表す。
属性一覧android:fromXScale
float。
Xサイズオフセットの開始値。未変更の場合、"1.0"を指定する。android:toXScale
float。
Xサイズの最終値。未変更の場合、"1.0"を指定する。android:fromYScale
float。
Yサイズオフセットの開始値。未変更の場合、"1.0"を指定する。android:toYScale
float。
Yサイズの最終値。未変更の場合、"1.0"を指定する。android:pivotX
float。
リサイズの中心点のX座標。android:pivotY
float。
リサイズの中心点のY座標。<scale>の他の属性値については、AnimationクラスのReferenceを参照すること。(Animationオブジェクトの全てのXML属性を継承している)
- アニメーションのリサイズ。pivotXとpivotYを指定することで、イメージの中心を外側あるいは内側に指定できる。例えば、値が0,0(左上)の場合、右下へと拡大する。ScaleAnimation(Reference)を表す。
- <translate>
- 水平・垂直方向の移動。3つの記法があり、-100~100を"%"付きで指定すると自身に対するパーセンテージ、-100~100を"%p"付きで指定すると親に対するパーセンテージ、接尾辞を付けないfloatを指定すると絶対位置となる。TranslateAnimation(Reference)を表す。
属性一覧android:fromXDelta
float。
floatまたはパーセンテージ。Xオフセットの開始値。
通常のピクセル座標として(例えば"5")、自身の幅に対するパーセンテージとして(例えば"5%")、親の幅に対するパーセンテージとして(例えば"5%p")のいずれかを指定する。android:toXDelta
float。
floatまたはパーセンテージ。Xオフセットの最終値。android:fromYDelta
float。
floatまたはパーセンテージ。Yオフセットの開始値。
通常のピクセル座標として(例えば"5")、自身の高さに対するパーセンテージとして(例えば"5%")、親の高さに対するパーセンテージとして(例えば"5%p")のいずれかを指定する。android:toYDelta
float。
floatまたはパーセンテージ。Yオフセットの最終値。<translate>の他の属性値については、AnimationクラスのReferenceを参照すること。(Animationオブジェクトの全てのXML属性を継承している)
- 水平・垂直方向の移動。3つの記法があり、-100~100を"%"付きで指定すると自身に対するパーセンテージ、-100~100を"%p"付きで指定すると親に対するパーセンテージ、接尾辞を付けないfloatを指定すると絶対位置となる。TranslateAnimation(Reference)を表す。
- <rotate>
- アニメーションの回転。RotateAnimation(Reference)を表す。
属性一覧android:fromDegrees
float。
回転角度の開始値。度(degrees)で指定する。android:toDegrees
float。
回転角度の最終値。度(degrees)で指定する。android:pivotX
float。
回転の中心点のX座標。
オブジェクトの左端のピクセル座標として(例えば"5")、自身の左端に対するパーセンテージとして(例えば"5%")、親コンテナの左端に対するパーセンテージとして(例えば"5%p")のいずれかを指定する。android:pivotX
float。
回転の中心点のY座標。<rotate>の他の属性値については、AnimationクラスのReferenceを参照すること。(Animationオブジェクトの全てのXML属性を継承している)
- アニメーションの回転。RotateAnimation(Reference)を表す。
example
XMLファイルはres/anim/hyperspace_jump.xmlに保存する。
<set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <scale android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromXScale="1.0" android:toXScale="1.4" android:fromYScale="1.0" android:toYScale="0.6" android:pivotX="50%" android:pivotY="50%" android:fillAfter="false" android:duration="700" /> <set android:interpolator="@android:anim/accelerate_interpolator" android:startOffset="700"> <scale android:fromXScale="1.4" android:toXScale="0.0" android:fromYScale="0.6" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:duration="400" /> <rotate android:fromDegrees="0" android:toDegrees="-45" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:duration="400" /> </set> </set>
ImageViewにアニメーションを適用し、アニメーションを開始する。
ImageView image = (ImageView) findViewById(R.id.image); Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump); image.startAnimation(hyperspaceJump);
see also
- コアトピック 2D Graphics:トゥイーンアニメーション En
Interpolators インターポレータ
InterpolatorはXMLで定義された、アニメーションの変化速度に影響を与える調節機能である。
定義済みのアニメーションエフェクトで加速、減速、繰り返し、はずみ(Bounce)などが可能となる。
Interpolatorはandroid:interpolator属性を持つアニメーションタグへ適用され、その値はInterpolatorリソースへの参照である。
Androidで使用できる全てのInterpolatorはInterpolatorクラス(Reference)のサブクラスである。
次の表は、Androidに含まれている全てのパブリックリソースの参照であり、android:interpolator属性で指定できる。
Interpolator class | Resource ID |
---|---|
AccelerateDecelerateInterpolator(Reference) | @android:anim/accelerate_decelerate_interpolator |
AccelerateInterpolator(Reference) | @android:anim/accelerate_interpolator |
AnticipateInterpolator(Reference) | @android:anim/anticipate_interpolator |
AnticipateOvershootInterpolator(Reference) | @android:anim/anticipate_overshoot_interpolator |
BounceInterpolator(Reference) | @android:anim/bounce_interpolator |
CycleInterpolator(Reference) | @android:anim/cycle_interpolator |
DecelerateInterpolator(Reference) | @android:anim/decelerate_interpolator |
LinearInterpolator(Reference) | @android:anim/linear_interpolator |
OvershootInterpolator(Reference) | @android:anim/overshoot_interpolator |
これらをandroid:interpolator属性を使用して適用する方法は、以下の通り。
<set android:interpolator="@android:anim/accelerate_interpolator"> ... </set>
Custom interpolators カスタムインターポレータ
定義済みのInterpolator(上記の表)に満足できない場合、カスタマイズできる。
例えば、AnticipateInterpolatorの加速度を調整したり、CycleInterpolatorのサイクル数を調節したりできる。
そのためにはXMLファイルによってInterpolatorリソースを作成する必要がある。
file location
res/anim/filename.xml
ファイル名はリソースIDとして使用される。
compiled resource datatype コンパイル済みリソースクラス
リソースポインターは、対応するinterpolatorオブジェクト
resource reference 参照方法
XML内:@[package:]anim/filename
syntax 構文
<?xml version="1.0" encoding="utf-8"?> <InterpolatorName xmlns:android="http://schemas.android.com/apk/res/android" android:attribute_name="value" />
属性を使用しない場合、元のInterpolatorと全く同じように機能する。
elements
XMLで定義されている各Interpolatorの実装は、名前を小文字で開始することに注意する。
- <accelerateDecelerateInterpolator>
- 始めはゆっくり、途中で加速し、終わりはゆっくり。
属性は無い。
- 始めはゆっくり、途中で加速し、終わりはゆっくり。
- <accelerateInterpolator>
- 始めはゆっくり、途中で加速する。
android:factor
float。加速レート(初期値1)。
- 始めはゆっくり、途中で加速する。
- <anticipateOvershootInterpolator>
- 始めは後方へ、途中で前方へ飛び出す。(訳注:引っ張って離すイメージ)
android:tension
float。張力(初期値2)。
- 始めは後方へ、途中で前方へ飛び出す。(訳注:引っ張って離すイメージ)
- <anticipateInterpolator>
- 始めは後方へ、途中で前方へ飛び出し、はみ出た後、戻る。(訳注:引っ張って離したら、勢いあまってはみ出て戻るイメージ)
android:tension
float。張力(初期値2)。android:extraTension
float。張力の乗算量(初期値1.5)。
- 始めは後方へ、途中で前方へ飛び出し、はみ出た後、戻る。(訳注:引っ張って離したら、勢いあまってはみ出て戻るイメージ)
- <bounceInterpolator>
- 終わりにはずむ。
属性は無い。
- 終わりにはずむ。
- <cycleInterpolator>
- 正弦波パターンで指定した周波数だけ繰り返す。
android:cycles
integer。周波数(初期値1)。
- 正弦波パターンで指定した周波数だけ繰り返す。
- <decelerateInterpolator>
- 始めに加速し、終わりに減速する。
android:factor
float。減速レート(初期値1)。
- 始めに加速し、終わりに減速する。
- <linearInterpolator>
- 変化率は一定。
属性は無い。
- 変化率は一定。
- <overshootInterpolator>
- 始めに前方へ飛び出し、はみ出した後、戻る。(訳注:発射して、勢いあまってはみ出て戻るイメージ)
android:tension
float。張力(初期値2)。
- 始めに前方へ飛び出し、はみ出した後、戻る。(訳注:発射して、勢いあまってはみ出て戻るイメージ)
example
XMLファイルはres/anim/my_overshoot_interpolator.xmlに保存する。
<?xml version="1.0" encoding="utf-8"?> <overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:tension="7.0" />
このアニメーションXMLはinterpolatorを適用する。
<scale xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@anim/my_overshoot_interpolator" android:fromXScale="1.0" android:toXScale="3.0" android:fromYScale="1.0" android:toYScale="3.0" android:pivotX="50%" android:pivotY="50%" android:duration="700" />
フレームアニメーション - Viewアニメーション
XMLで定義されたアニメーションで、フィルムのように画像を順番に表示する。
file location
res/drawable/filename.xml
ファイル名はリソースIDとして使用される。
compiled resource datatype コンパイル済みリソースクラス
リソースポインターは、AnimationDrawable(Reference)
resource reference 参照方法
Javaコード内:R.drawable.filename
XML内:@[package:]anim/filename
syntax 構文
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot=["true" | "false"] > <item android:drawable="@[package:]drawable/drawable_resource_name" android:duration="integer" /> </animation-list>
elements
- <animation-list>
- 必須。ルート要素でなければならない。1つ以上の
- タグを含む。
android:oneshot
boolean。アニメーションを一度だけ実行する場合"true"、繰り返す場合"false"。 - タグを含む。
- 必須。ルート要素でなければならない。1つ以上の
- <item>
- アニメーションの1フレームを定義する。
タグの子でなければならない。
android:drawable
ドローワブルリソースを指定する。このフレームで使用される画像。android:duration
integer。このフレームを表示する時間(ミリ秒)
- アニメーションの1フレームを定義する。
example
XMLファイルはres/drawable/rocket.xmlに保存する。
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/rocket_thrust1" android:duration="200" /> <item android:drawable="@drawable/rocket_thrust2" android:duration="200" /> <item android:drawable="@drawable/rocket_thrust3" android:duration="200" /> </animation-list>
次のコードは、Viewの背景にアニメーションを設定し、再生する。
ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage.setBackgroundResource(R.drawable.rocket_thrust); rocketAnimation = rocketImage.getBackground(); if (rocketAnimation instanceof Animatable) { ((Animatable)rocketAnimation).start(); }
see also
- コアトピック 2D Graphics:フレームアニメーション En(訳注:リンクはトゥイーンアニメーションのページ)
※上記はhttps://developer.android.com/guide/topics/resources/animation-resource.html意訳である
Android開発者向けドキュメントを意訳してみる。 - 365連休
意訳元https://developer.android.com/のライセンス解釈
ソースコードから抽出されたドキュメントやコードはAndroid Open Source Projectの優先ライセンスであるApache 2.0 licenseが適用され、それ以外のコンテンツはCC BY 2.5が適用されている。
よって、ページ全体の意訳についてはCC BY 2.5における翻案行為、ページ内のコード転載についてはApache 2.0 licenseにおける頒布行為にあたると解釈している。