diff --git a/res/layout/photopage_progress_bar.xml b/res/layout/photopage_progress_bar.xml
new file mode 100644
index 0000000..778feb3
--- /dev/null
+++ b/res/layout/photopage_progress_bar.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:id="@+id/photopage_progress_bar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_alignParentLeft="true"
+        android:padding="25dp"
+        android:visibility="invisible">
+        <View
+                android:id="@+id/photopage_progress_background"
+                android:background="#ff000000"
+                android:layout_width="match_parent"
+                android:layout_height="8dp"
+                android:layout_alignParentBottom="true"
+                android:visibility="visible"/>
+        <View
+                android:id="@+id/photopage_progress_foreground"
+                android:background="#ff33b5e5"
+                android:layout_width="10dp"
+                android:layout_height="8dp"
+                android:layout_alignParentLeft="true"
+                android:layout_alignParentBottom="true"
+                android:visibility="visible"/>
+        <TextView
+                android:id="@+id/photopage_progress_bar_text"
+                android:text="@string/pano_progress_text"
+                android:textColor="#ffffffff"
+                android:textSize="14dp"
+                android:shadowColor="#ff000000"
+                android:shadowDx="0"
+                android:shadowDy="0"
+                android:shadowRadius="2"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
+                android:layout_above="@id/photopage_progress_background"
+                android:paddingBottom="8dp"
+                android:visibility="visible"/>
+</RelativeLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c6ef704..92d4308 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -496,4 +496,8 @@
 
     <!-- Toast if the trimmed video is the same as the original one. [CHAR LIMIT=80] -->
     <string name="trim_too_long">Did not trim : the same length as origin</string>
+
+    <!-- Text to show with progress bar while stitching in Gallery -->
+    <string name="pano_progress_text">Rendering panorama</string>
+
 </resources>
diff --git a/src/com/android/gallery3d/app/PhotoPageProgressBar.java b/src/com/android/gallery3d/app/PhotoPageProgressBar.java
new file mode 100644
index 0000000..141fea6
--- /dev/null
+++ b/src/com/android/gallery3d/app/PhotoPageProgressBar.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.gallery3d.app;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.widget.RelativeLayout;
+
+import com.android.gallery3d.R;
+
+public class PhotoPageProgressBar {
+    private ViewGroup mContainer;
+    private View mProgress;
+
+    public PhotoPageProgressBar(Context context, RelativeLayout parentLayout) {
+        LayoutInflater inflater = (LayoutInflater) context
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        mContainer = (ViewGroup) inflater.inflate(R.layout.photopage_progress_bar, parentLayout,
+                false);
+        parentLayout.addView(mContainer);
+        mProgress = mContainer.findViewById(R.id.photopage_progress_foreground);
+    }
+
+    public void setProgress(int progressPercent) {
+        mContainer.setVisibility(View.VISIBLE);
+        LayoutParams layoutParams = mProgress.getLayoutParams();
+        layoutParams.width = mContainer.getWidth() * progressPercent / 100;
+        mProgress.setLayoutParams(layoutParams);
+    }
+
+    public void hideProgress() {
+        mContainer.setVisibility(View.INVISIBLE);
+    }
+}
