The following code shows how to Create XML based animation.
res\anim\grow.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:duration="150" android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="1.0" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" /> <translate android:duration="150" android:fromXDelta="0%" android:toXDelta="0%" android:fromYDelta="50%" android:toYDelta="0%" /> </set>
res\anim\shrink.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:duration="150" android:fromXScale="1.0" android:toXScale="0.0" android:fromYScale="1.0" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" /> <translate android:duration="150" android:fromXDelta="0%" android:toXDelta="0%" android:fromYDelta="0%" android:toYDelta="50%" /> </set>
res\layout\main.xml
<?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/flip_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" /> </RelativeLayout>
MainActivity.java
package com.examples.animationxml; // w w w.j av a 2s . c om import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; public class MainActivity extends Activity { boolean isHeads; Animation shrink, grow; ImageView flipImage; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); flipImage = (ImageView)findViewById(R.id.flip_image); flipImage.setImageResource(R.drawable.heads); isHeads = true; shrink = AnimationUtils.loadAnimation(this, R.anim.shrink); shrink.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) {} @Override public void onAnimationRepeat(Animation animation) {} @Override public void onAnimationEnd(Animation animation) { if(isHeads) { isHeads = false; flipImage.setImageResource(R.drawable.tails); } else { isHeads = true; flipImage.setImageResource(R.drawable.heads); } flipImage.startAnimation(grow); } }); grow = AnimationUtils.loadAnimation(this, R.anim.grow); } @Override public boolean onTouchEvent(MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN) { flipImage.startAnimation(shrink); return true; } return super.onTouchEvent(event); } }