package com.example.adnroid.recipe050;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.Spinner;
public class Recipe050 extends Activity {
private Spinner mSpinner;
private ImageView mImageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] data = {
"accelerate_decelerate_interpolator",
"accelerate_interpolator",
"anticipate_interpolator",
"anticipate_overshoot_interpolator",
"bounce_interpolator",
// "cycle_interpolator",
"decelerate_interpolator",
// "fade_in",
// "fade_out",
"linear_interpolator",
"overshoot_interpolator",
// "slide_in_left",
// "slide_out_right"
};
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
mSpinner = (Spinner)findViewById(R.id.spinner);
mSpinner.setAdapter(arrayAdapter);
mImageView = (ImageView)findViewById(R.id.image);
mImageView.setImageResource(R.drawable.sample);
}
public void startMix(View view) {
AnimationSet animation = new AnimationSet(true);
// 透明になりながら
animation.addAnimation(new AlphaAnimation(1.0F, 0.0F));
// 回転しながら
animation.addAnimation(new RotateAnimation(0, 360));
// 拡大しながら
animation.addAnimation(new ScaleAnimation(1, 2, 1, 2));
// 移動しながら
animation.addAnimation(new TranslateAnimation(0, 300, 0, 300));
// 3秒で
animation.setDuration(3000);
mImageView.startAnimation(animation);
}
public void startAlpha(View view) {
AlphaAnimation animation;
animation = new AlphaAnimation(1.0F, 0.0F);
// 3秒で
animation.setDuration(3000);
mImageView.startAnimation(animation);
}
public void startScale(View view) {
ScaleAnimation animation;
animation = new ScaleAnimation(1, 2, 1, 2, mImageView.getWidth() / 2.0F, mImageView.getHeight() / 2.0F);
// 3秒で
animation.setDuration(3000);
animation.setInterpolator(this, android.R.anim.bounce_interpolator);
mImageView.startAnimation(animation);
}
public void startRotate(View view) {
RotateAnimation animation;
animation = new RotateAnimation(0, 360, mImageView.getWidth() / 2.0F, mImageView.getHeight() / 2.0F);
// 3秒で
animation.setDuration(3000);
mImageView.startAnimation(animation);
}
public void onClick(View view) {
int i = mSpinner.getSelectedItemPosition();
Log.d("Recipe", "selectedItemPosition=" + i);
int anim = 0;
switch (i) {
case 0:
anim = android.R.anim.accelerate_decelerate_interpolator;
break;
case 1:
anim = android.R.anim.accelerate_interpolator;
break;
case 2:
anim = android.R.anim.anticipate_interpolator;
break;
case 3:
anim = android.R.anim.anticipate_overshoot_interpolator;
break;
case 4:
anim = android.R.anim.bounce_interpolator;
break;
case 5:
anim = android.R.anim.decelerate_interpolator;
break;
case 6:
anim = android.R.anim.linear_interpolator;
break;
case 7:
anim = android.R.anim.overshoot_interpolator;
break;
}
translate(anim);
}
private void translate(int interpolator) {
Animation animation = new TranslateAnimation(0, 200, 0, 200);
animation.setDuration(1000);
animation.setInterpolator(this, interpolator);
// 無限に繰り返す
// translate.setRepeatCount(-1);
// 4回繰り返す(0を指定した場合1回なので+1回繰り返される)
// translate.setRepeatCount(3);
// 元に戻さない(終了状態を維持する)
// translate.setFillAfter(true);
//アニメーションスタート
mImageView.startAnimation(animation);
}
}