package com.android.demo;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;
import com.android.demo.interpolator.BackInterpolator;
import com.android.demo.interpolator.BounceInterpolator;
import com.android.demo.interpolator.CircInterpolator;
import com.android.demo.interpolator.CubicInterpolator;
import com.android.demo.interpolator.EasingType;
import com.android.demo.interpolator.ElasticInterpolator;
import com.android.demo.interpolator.ExpoInterpolator;
import com.android.demo.interpolator.QuadInterpolator;
import com.android.demo.interpolator.QuartInterpolator;
import com.android.demo.interpolator.QuintInterpolator;
import com.android.demo.interpolator.SineInterpolator;
public class TestInterpolators extends Activity {
private Button button0;
private Button button1;
private PlotView plot;
private Animation animLeft;
private Animation animRight;
private Animation animTop;
private Spinner easing;
private TextView text;
private Interpolator interpolator;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.interpolator_main);
animLeft = AnimationUtils.loadAnimation(this, R.anim.slide_in_left);
animRight = AnimationUtils.loadAnimation(this, R.anim.slide_in_right);
animTop = AnimationUtils.loadAnimation(this, R.anim.slide_in_top);
plot = (PlotView) findViewById(R.id.plot);
easing = (Spinner) findViewById(R.id.easing);
button0 = (Button) findViewById(R.id.button0);
button0.setOnClickListener(clickListener);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(clickListener);
text = (TextView) findViewById(R.id.text);
easing.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
text.setText((CharSequence) easing.getSelectedItem());
switch (position) {
case 0:
interpolator = new BackInterpolator(EasingType.IN, 0);
break;
case 1:
interpolator = new BackInterpolator(EasingType.INOUT, 0);
break;
case 2:
interpolator = new BackInterpolator(EasingType.INOUT, 0);
break;
case 3:
interpolator = new ElasticInterpolator(EasingType.IN, 1, 0.3f);
break;
case 4:
interpolator = new ElasticInterpolator(EasingType.OUT, 1, 0.3f);
break;
case 5:
interpolator = new ElasticInterpolator(EasingType.INOUT, 1, 0.3f);
break;
case 6:
interpolator = new BounceInterpolator(EasingType.IN);
break;
case 7:
interpolator = new BounceInterpolator(EasingType.OUT);
break;
case 8:
interpolator = new BounceInterpolator(EasingType.INOUT);
break;
case 9:
interpolator = new CircInterpolator(EasingType.IN);
break;
case 10:
interpolator = new CircInterpolator(EasingType.OUT);
break;
case 11:
interpolator = new CircInterpolator(EasingType.INOUT);
break;
case 12:
interpolator = new ExpoInterpolator(EasingType.IN);
break;
case 13:
interpolator = new ExpoInterpolator(EasingType.OUT);
break;
case 14:
interpolator = new ExpoInterpolator(EasingType.INOUT);
break;
case 15:
interpolator = new QuadInterpolator(EasingType.IN);
break;
case 16:
interpolator = new QuadInterpolator(EasingType.OUT);
break;
case 17:
interpolator = new QuadInterpolator(EasingType.INOUT);
break;
case 18:
interpolator = new CubicInterpolator(EasingType.IN);
break;
case 19:
interpolator = new CubicInterpolator(EasingType.OUT);
break;
case 20:
interpolator = new CubicInterpolator(EasingType.INOUT);
break;
case 21:
interpolator = new QuartInterpolator(EasingType.IN);
break;
case 22:
interpolator = new QuartInterpolator(EasingType.OUT);
break;
case 23:
interpolator = new QuartInterpolator(EasingType.INOUT);
break;
case 24:
interpolator = new QuintInterpolator(EasingType.IN);
break;
case 25:
interpolator = new QuintInterpolator(EasingType.OUT);
break;
case 26:
interpolator = new QuintInterpolator(EasingType.INOUT);
break;
case 27:
interpolator = new SineInterpolator(EasingType.IN);
break;
case 28:
interpolator = new SineInterpolator(EasingType.OUT);
break;
case 29:
interpolator = new SineInterpolator(EasingType.INOUT);
break;
default:
break;
}
plot.resetPath();
for (float t=0; t<=1; t += 0.01f) {
float interpolation = interpolator.getInterpolation(t);
// Log.d("TestInterpolators", "interpolation " + interpolation);
plot.addPoint(t, interpolation);
}
plot.invalidate();
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
OnClickListener clickListener = new OnClickListener() {
public void onClick(View view) {
animLeft.setInterpolator(interpolator);
button0.startAnimation(animLeft);
animRight.setInterpolator(interpolator);
button1.startAnimation(animRight);
animTop.setInterpolator(interpolator);
plot.startAnimation(animTop);
}
};
}