package uk.co.cogitolearning.propertyanimations_example; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.AccelerateInterpolator; import android.view.animation.DecelerateInterpolator; import android.view.animation.LinearInterpolator; public class PropertyAnimation05 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.property_animations05); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public void startAnimation(View view) { float scale = getResources().getDisplayMetrics().density; View someImage = findViewById(R.id.some_image); ObjectAnimator anim1 = ObjectAnimator.ofFloat(someImage, "x", 20.0f*scale, 220.0f*scale); ObjectAnimator anim2 = ObjectAnimator.ofFloat(someImage, "y", 20.0f*scale, 220.0f*scale); ObjectAnimator anim3 = ObjectAnimator.ofFloat(someImage, "x", 220.0f*scale, 20.0f*scale); ObjectAnimator anim4 = ObjectAnimator.ofFloat(someImage, "y", 220.0f*scale, 20.0f*scale); // Fine grained control over all animations inside the set anim1.setDuration(500); anim2.setDuration(500); anim3.setDuration(1000); anim4.setDuration(1000); anim1.setInterpolator(new AccelerateInterpolator()); anim2.setInterpolator(new DecelerateInterpolator()); anim3.setInterpolator(new LinearInterpolator()); anim4.setInterpolator(new AccelerateDecelerateInterpolator()); AnimatorSet animSet = new AnimatorSet(); // Long version to set up animation set // animSet.play(anim1).before(anim2); // animSet.play(anim3).after(anim2); // animSet.play(anim3).with(anim4); // animSet.play(anim1).after(500); // Abbreviated version using chained calls to Builder methods animSet.play(anim1).before(anim2).after(500); animSet.play(anim3).after(anim2).with(anim4); // Global control. Uncomment if not using fine grained control // animSet.setDuration(1000); // animSet.setInterpolator(new AccelerateDecelerateInterpolator()); animSet.start(); } }