Index: /issm/trunk-jpl/src/mobile/android/ISSM_APP/res/layout/backview.xml
===================================================================
--- /issm/trunk-jpl/src/mobile/android/ISSM_APP/res/layout/backview.xml	(revision 14532)
+++ /issm/trunk-jpl/src/mobile/android/ISSM_APP/res/layout/backview.xml	(revision 14532)
@@ -0,0 +1,12 @@
+<RelativeLayout android:id="@+id/Layoutback"
+	android:layout_width="fill_parent"
+	android:layout_height="fill_parent"
+	xmlns:android="http://schemas.android.com/apk/res/android">
+	<TextView
+		android:layout_centerHorizontal="true"
+		android:layout_centerVertical="true"
+		android:layout_width="wrap_content"
+		android:id="@+id/back_view"
+		android:layout_height="wrap_content">
+	</TextView>
+</RelativeLayout>
Index: /issm/trunk-jpl/src/mobile/android/ISSM_APP/res/layout/frontview.xml
===================================================================
--- /issm/trunk-jpl/src/mobile/android/ISSM_APP/res/layout/frontview.xml	(revision 14532)
+++ /issm/trunk-jpl/src/mobile/android/ISSM_APP/res/layout/frontview.xml	(revision 14532)
@@ -0,0 +1,12 @@
+<RelativeLayout android:id="@+id/Layoutfront"
+	android:layout_width="fill_parent"
+	android:layout_height="fill_parent"
+	xmlns:android="http://schemas.android.com/apk/res/android">
+	<ImageView
+		android:layout_centerHorizontal="true"
+		android:layout_centerVertical="true"
+		android:layout_width="fill_parent"
+		android:id="@+id/front_view"
+		android:layout_height="fill_parent">
+	</ImageView>
+</RelativeLayout>
Index: /issm/trunk-jpl/src/mobile/android/ISSM_APP/res/layout/gallery.xml
===================================================================
--- /issm/trunk-jpl/src/mobile/android/ISSM_APP/res/layout/gallery.xml	(revision 14531)
+++ /issm/trunk-jpl/src/mobile/android/ISSM_APP/res/layout/gallery.xml	(revision 14532)
@@ -5,13 +5,24 @@
     android:background="@layout/roundcorner"
     android:orientation="vertical" >
-
-    <ImageView
+	
+    <FrameLayout
+		android:id="@+id/container"
+		android:layout_width="fill_parent"
+		android:layout_height="fill_parent"
+		android:layout_above="@+id/gallery_relative_layout"
+		android:layout_marginLeft="20dip"
+        android:layout_marginRight="20dip"
+        android:layout_marginTop="20dip">
+		<include android:id="@+id/front" layout="@layout/frontview" />
+		<include android:id="@+id/back" layout="@layout/backview" />
+	</FrameLayout>
+    <!-- <ImageView
         android:id="@+id/selected_imageview"
         android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
+        android:layout_height="fill_parent" 
         android:layout_above="@+id/gallery_relative_layout"
         android:layout_marginLeft="30dip"
         android:layout_marginRight="30dip"
-        android:layout_marginTop="30dip" />
+        android:layout_marginTop="30dip" /> -->
 
     <RelativeLayout
Index: /issm/trunk-jpl/src/mobile/android/ISSM_APP/src/gov/nasa/jpl/issm/DisplayNextView.java
===================================================================
--- /issm/trunk-jpl/src/mobile/android/ISSM_APP/src/gov/nasa/jpl/issm/DisplayNextView.java	(revision 14532)
+++ /issm/trunk-jpl/src/mobile/android/ISSM_APP/src/gov/nasa/jpl/issm/DisplayNextView.java	(revision 14532)
@@ -0,0 +1,29 @@
+package gov.nasa.jpl.issm;
+
+import android.view.animation.Animation;
+import android.view.animation.Animation.AnimationListener;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+public class DisplayNextView implements AnimationListener {
+
+	private boolean mCurrentView;
+	ImageView image;
+	TextView text;
+
+	public DisplayNextView(boolean currentView, ImageView image, TextView text) {
+		mCurrentView = currentView;
+		this.image = image;
+		this.text = text;
+	}
+
+	public void onAnimationStart(Animation animation) {
+	}
+
+	public void onAnimationEnd(Animation animation) {
+		image.post(new SwapViews(mCurrentView, image, text));
+	}
+
+	public void onAnimationRepeat(Animation animation) {
+	}
+}
Index: /issm/trunk-jpl/src/mobile/android/ISSM_APP/src/gov/nasa/jpl/issm/FlipAnimation.java
===================================================================
--- /issm/trunk-jpl/src/mobile/android/ISSM_APP/src/gov/nasa/jpl/issm/FlipAnimation.java	(revision 14532)
+++ /issm/trunk-jpl/src/mobile/android/ISSM_APP/src/gov/nasa/jpl/issm/FlipAnimation.java	(revision 14532)
@@ -0,0 +1,55 @@
+package gov.nasa.jpl.issm;
+
+import android.graphics.Camera;
+import android.graphics.Matrix;
+import android.view.animation.Animation;
+import android.view.animation.Transformation;
+
+public class FlipAnimation  extends Animation 
+{
+	private final float mFromDegrees;
+	private final float mToDegrees;
+	private final float mCenterX;
+	private final float mCenterY;
+	private Camera mCamera;
+	
+	public FlipAnimation(float fromDegrees, float toDegrees,
+	   float centerX, float centerY) 
+	{
+		mFromDegrees = fromDegrees;
+		mToDegrees = toDegrees;
+		mCenterX = centerX;
+		mCenterY = centerY;
+	}
+		
+	@Override
+	public void initialize(int width, int height, int parentWidth, int parentHeight) 
+	{
+		super.initialize(width, height, parentWidth, parentHeight);
+		mCamera = new Camera();
+	}
+	
+	@Override
+	protected void applyTransformation(float interpolatedTime, Transformation t) {
+		final float fromDegrees = mFromDegrees;
+		float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);
+		
+		final float centerX = mCenterX;
+		final float centerY = mCenterY;
+		final Camera camera = mCamera;
+		
+		final Matrix matrix = t.getMatrix();
+		
+		camera.save();
+		
+		camera.rotateY(degrees);
+		
+		camera.getMatrix(matrix);
+		camera.restore();
+		
+		matrix.preTranslate(-centerX, -centerY);
+		matrix.postTranslate(centerX, centerY);
+	
+	}
+
+}
Index: /issm/trunk-jpl/src/mobile/android/ISSM_APP/src/gov/nasa/jpl/issm/GalleryImage.java
===================================================================
--- /issm/trunk-jpl/src/mobile/android/ISSM_APP/src/gov/nasa/jpl/issm/GalleryImage.java	(revision 14531)
+++ /issm/trunk-jpl/src/mobile/android/ISSM_APP/src/gov/nasa/jpl/issm/GalleryImage.java	(revision 14532)
@@ -11,6 +11,8 @@
 import android.view.View;
 import android.view.View.OnClickListener;
+import android.view.animation.AccelerateInterpolator;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemSelectedListener;
+import android.widget.TextView;
 import android.widget.Gallery;
 import android.widget.ImageView;
@@ -20,4 +22,5 @@
 
 	private ImageView selectedImageView;
+	private TextView selectedTextView;
 
 	private ImageView leftArrowImageView;
@@ -32,4 +35,6 @@
 
 	private GalleryAdapter galImageAdapter;
+	
+	private boolean isFirstImage = true;
 
 	@Override
@@ -44,8 +49,24 @@
 	private void setupUI() {
 
-		selectedImageView = (ImageView) findViewById(R.id.selected_imageview);
+		selectedImageView = (ImageView) findViewById(R.id.front_view);
+		selectedTextView = (TextView) findViewById(R.id.back_view);
+		selectedTextView.setVisibility(View.GONE);
 		leftArrowImageView = (ImageView) findViewById(R.id.left_arrow_imageview);
 		rightArrowImageView = (ImageView) findViewById(R.id.right_arrow_imageview);
 		gallery = (Gallery) findViewById(R.id.gallery);
+		
+		selectedImageView.setOnClickListener(new View.OnClickListener() 
+		{
+			   public void onClick(View view) {
+			    if (isFirstImage) {       
+			     applyRotation(0, 90);
+			     isFirstImage = !isFirstImage;
+
+			    } else {    
+			     applyRotation(0, -90);
+			     isFirstImage = !isFirstImage;
+			    }
+			   }
+			});          
 
 		leftArrowImageView.setOnClickListener(new OnClickListener() {
@@ -147,8 +168,10 @@
 
 		drawables = new ArrayList<Drawable>();
-		drawables.add(getResources().getDrawable(R.drawable.natureimage1));
-		drawables.add(getResources().getDrawable(R.drawable.natureimage2));
-		drawables.add(getResources().getDrawable(R.drawable.natureimage3));
-		drawables.add(getResources().getDrawable(R.drawable.natureimage4));
+		
+		for (int i = 1; i < 5; i++)
+		{
+			drawables.add(getResources().getDrawable(getResources().getIdentifier("natureimage"+i, "drawable", getPackageName())));
+		}
+		
 	}
 
@@ -159,4 +182,28 @@
 		selectedImageView.setImageBitmap(b);
 		selectedImageView.setScaleType(ScaleType.FIT_XY);
+		selectedTextView.setText("This is sample text " + selectedImagePosition);
+	}
+	
+	private void applyRotation(float start, float end) 
+	{
+		// Find the center of image
+		final float centerX = selectedImageView.getWidth() / 2.0f;
+		final float centerY = selectedImageView.getHeight() / 2.0f;
+
+		// Create a new 3D rotation with the supplied parameter
+		// The animation listener is used to trigger the next animation
+		final FlipAnimation rotation =
+		       new FlipAnimation(start, end, centerX, centerY);
+		rotation.setDuration(500);
+		rotation.setFillAfter(true);
+		rotation.setInterpolator(new AccelerateInterpolator());
+		rotation.setAnimationListener(new DisplayNextView(isFirstImage, selectedImageView, selectedTextView));
+
+		if (isFirstImage)
+		{
+			selectedImageView.startAnimation(rotation);
+		} else {
+			selectedTextView.startAnimation(rotation);
+		}
 
 	}
Index: /issm/trunk-jpl/src/mobile/android/ISSM_APP/src/gov/nasa/jpl/issm/SwapViews.java
===================================================================
--- /issm/trunk-jpl/src/mobile/android/ISSM_APP/src/gov/nasa/jpl/issm/SwapViews.java	(revision 14532)
+++ /issm/trunk-jpl/src/mobile/android/ISSM_APP/src/gov/nasa/jpl/issm/SwapViews.java	(revision 14532)
@@ -0,0 +1,48 @@
+package gov.nasa.jpl.issm;
+
+import android.view.View;
+import android.view.animation.DecelerateInterpolator;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+public final class SwapViews implements Runnable {
+	private boolean mIsFirstView;
+	ImageView image;
+	TextView text;
+	
+	public SwapViews(boolean isFirstView, ImageView image, TextView text) {
+	 mIsFirstView = isFirstView;
+	 this.image = image;
+	 this.text = text;
+	}
+	
+	public void run() {
+	 final float centerX = image.getWidth() / 2.0f;
+	 final float centerY = image.getHeight() / 2.0f;
+	 FlipAnimation rotation;
+	
+	 if (mIsFirstView) {
+	  image.setVisibility(View.GONE);
+	  text.setVisibility(View.VISIBLE);
+	  text.requestFocus();
+	
+	     rotation = new FlipAnimation(-90, 0, centerX, centerY);
+	 } else {
+	  text.setVisibility(View.GONE);
+	  image.setVisibility(View.VISIBLE);
+	  image.requestFocus();
+	
+	     rotation = new FlipAnimation(90, 0, centerX, centerY);
+	 }
+	
+	 rotation.setDuration(500);
+	 rotation.setFillAfter(true);
+	 rotation.setInterpolator(new DecelerateInterpolator());
+	
+	 if (mIsFirstView) {
+	  text.startAnimation(rotation);
+	 } else {
+	  image.startAnimation(rotation);
+	 }
+	}
+}
