最終更新:
moonlight_aska 2015年11月28日(土) 23:48:09履歴
アニメーションフレームワークは, 以下の2種類が準備されている.
アニメーションの一種である移動アニメーションを行うには, アニメータ(Animator)クラスあるいはビューアニメーション(view.Animation)クラスを利用する.

↓ 移動

- Property Animation : Android 3.0 (API Level 11)
- View Animation : Android 1.0 (API Level 1)
アニメーションの一種である移動アニメーションを行うには, アニメータ(Animator)クラスあるいはビューアニメーション(view.Animation)クラスを利用する.

↓ 移動

- res/animator/translate.xml
- interpolatorは, アニメーション動作の変化を指定する. 例では, decelerate_interpolator(減速).
- propertyNameは, アニメーションするオブジェクトのプロパティ名を指定する. 例では, ViewのtranslationX, Y.
- durationは, アニメーションの動作時間(ms)を指定する.
- valueFromとvalueToは, 指定したpropertyのアニメーション開始/終了時の値を指定する. 例では, 座標値.
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<objectAnimator
android:interpolator="@android:anim/decelerate_interpolator"
android:propertyName="translatonX"
android:duration="10000"
android:valueFrom="0"
android:valueTo="100"
/>
<objectAnimator
android:interpolator="@android:anim/decelerate_interpolator"
android:propertyName="translationY"
android:duration="10000"
android:valueFrom="0"
android:valueTo="120"
/>
</set>
- Animation03.java
- findViewByIdメソッドで, 指定したリソースインデックスのIDに対応したイメージビューのインスタンスを取得する.
- AnimatorInflater#loadAnimatorメソッドで, アニメーション設定ファイル(translate.xml)を読み込み, AnimatorSetを作成する.
- AnimatorSet#setTargetメソッドで, ターゲットのオブジェクトを設定する.
- AnimatorSet#startメソッドで, アニメーションを開始する.
package com.moonlight_aska.android.animation03;
import android.animation.AnimatorInflater;
import android.animation.AnimatorSet;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
public class Animation03 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView img = (ImageView)findViewById(R.id.robot);
AnimatorSet set = (AnimatorSet)AnimatorInflater.loadAnimator(this, R.animator.translate);
set.setTarget(img);
set.start();
}
}
- res/layout/main.xml
- 画像ファイル(robot.png)は, res/drawableフォルダの下に置く.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:id="@+id/robot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/robot"
/>
</RelativeLayout>
- res/anim/translate.xml
- TranslateAnimationクラスで指定する属性
android:fromXDelta | アニメーション開始時のX座標の値 |
andorid:toXDelta | アニメーション終了時のX座標の値 |
android:fromYDelta | アニメーション開始時のY座標の値 |
android:toYDelta | アニメーション終了時のY座標の値 |
- Animationクラスで指定する属性
android:duration | アニメーションの動作時間(msec) |
android:fillAfter | true:アニメーション終了後にアニメーションの変換が適用 |
android:fillBefore | true:アニメーション開始前にアニメーションの変換が適用 |
android:fillEnabled | true:fillAfterが適用 |
android:repeatCount | アニメーションの繰り返し回数 |
android:repeatMode | アニメーションが終了した場合の振る舞い |
android:startOffset | アニメーションが開始する前に置く時間(msec) |
android:zAdjustment | アニメーション実行中のコンテンツについてZ軸方向の調整 |
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromXDelta="0"
android:toXDelta="100"
android:fromYDelta="0"
android:toYDelta="120"
android:fillAfter="true"
android:duration="10000"
/>
- Animation03.java
- findViewByIdメソッドで, 指定したリソースインデックスのIDに対応したイメージビューのインスタンスを取得する.
- AnimationUtils#loadAnimationメソッドでアニメーション設定ファイル(translate.xml)を読み込み, Animationを作成する.
- ImageView#startAnimationメソッドでアニメーションを開始する.
package com.moonlight_aska.android.animation03;
import android.app.Activity;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
public class Animation03 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView img = (ImageView)findViewById(R.id.robot);
Animation anim = AnimationUtils.loadAnimation(this, R.anim.translate);
img.startAnimation(anim);
}
}
コメントをかく