summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/VideoUI.java
diff options
context:
space:
mode:
authorDoris Liu <tianliu@google.com>2013-08-08 18:08:43 -0700
committerDoris Liu <tianliu@google.com>2013-08-09 15:01:39 -0700
commitc3679c0961521165499380c77344acc69072b2ac (patch)
treef7aa003114196882afb3941fe98e9c0a0bc53680 /src/com/android/camera/VideoUI.java
parent3d0b691b8f7a844093e8de9267ffa2ce16d0c5a9 (diff)
downloadandroid_packages_apps_Snap-c3679c0961521165499380c77344acc69072b2ac.tar.gz
android_packages_apps_Snap-c3679c0961521165499380c77344acc69072b2ac.tar.bz2
android_packages_apps_Snap-c3679c0961521165499380c77344acc69072b2ac.zip
Use PopupWindow for settings popup
Bug:10261902 Change-Id: Ia77cff276615db8c3fbb9e859bf099249b4021cf
Diffstat (limited to 'src/com/android/camera/VideoUI.java')
-rw-r--r--src/com/android/camera/VideoUI.java71
1 files changed, 41 insertions, 30 deletions
diff --git a/src/com/android/camera/VideoUI.java b/src/com/android/camera/VideoUI.java
index 1f6505fcf..ee49277dc 100644
--- a/src/com/android/camera/VideoUI.java
+++ b/src/com/android/camera/VideoUI.java
@@ -19,8 +19,10 @@ package com.android.camera;
import java.util.List;
import android.graphics.Bitmap;
+import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.SurfaceTexture;
+import android.graphics.drawable.ColorDrawable;
import android.hardware.Camera.Parameters;
import android.os.Handler;
import android.os.Message;
@@ -38,6 +40,7 @@ import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
+import android.widget.PopupWindow;
import android.widget.TextView;
import com.android.camera.CameraPreference.OnPreferenceChangedListener;
@@ -78,11 +81,10 @@ public class VideoUI implements PieRenderer.PieListener,
private PieRenderer mPieRenderer;
private VideoMenu mVideoMenu;
private CameraControls mCameraControls;
- private AbstractSettingPopup mPopup;
+ private SettingsPopup mPopup;
private ZoomRenderer mZoomRenderer;
private PreviewGestures mGestures;
private View mMenuButton;
- private View mBlocker;
private OnScreenIndicators mOnScreenIndicators;
private RotateLayout mRecordingTimeRect;
private final Object mLock = new Object();
@@ -134,6 +136,31 @@ public class VideoUI implements PieRenderer.PieListener,
}
};
+ private class SettingsPopup extends PopupWindow {
+ public SettingsPopup(View popup) {
+ super(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
+ setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+ setOutsideTouchable(true);
+ setFocusable(true);
+ popup.setVisibility(View.VISIBLE);
+ setContentView(popup);
+ showAtLocation(mRootView, Gravity.CENTER, 0, 0);
+ }
+
+ public void dismiss(boolean topLevelOnly) {
+ super.dismiss();
+ popupDismissed();
+ showUI();
+ mVideoMenu.popupDismissed(topLevelOnly);
+ }
+
+ @Override
+ public void dismiss() {
+ // Called by Framework when touch outside the popup or hit back key
+ dismiss(true);
+ }
+ }
+
public VideoUI(CameraActivity activity, VideoController controller, View parent) {
mActivity = activity;
mController = controller;
@@ -162,7 +189,6 @@ public class VideoUI implements PieRenderer.PieListener,
}
private void initializeControlByIntent() {
- mBlocker = mActivity.findViewById(R.id.blocker);
mMenuButton = mActivity.findViewById(R.id.menu);
mMenuButton.setOnClickListener(new OnClickListener() {
@Override
@@ -440,36 +466,25 @@ public class VideoUI implements PieRenderer.PieListener,
}
}
- public void showPopup(AbstractSettingPopup popup) {
- hideUI();
- mBlocker.setVisibility(View.INVISIBLE);
- setShowMenu(false);
- mPopup = popup;
- mPopup.setVisibility(View.VISIBLE);
- FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
- LayoutParams.WRAP_CONTENT);
- lp.gravity = Gravity.CENTER;
- ((FrameLayout) mRootView).addView(mPopup, lp);
+ public void dismissPopup(boolean topLevelOnly) {
+ // In review mode, we do not want to bring up the camera UI
+ if (mController.isInReviewMode()) return;
+ if (mPopup != null) {
+ mPopup.dismiss(topLevelOnly);
+ }
}
- public void dismissPopup(boolean topLevelOnly) {
- dismissPopup(topLevelOnly, true);
+ private void popupDismissed() {
+ mPopup = null;
}
- public void dismissPopup(boolean topLevelPopupOnly, boolean fullScreen) {
- // In review mode, we do not want to bring up the camera UI
- if (mController.isInReviewMode()) return;
+ public void showPopup(AbstractSettingPopup popup) {
+ hideUI();
- if (fullScreen) {
- showUI();
- mBlocker.setVisibility(View.VISIBLE);
- }
- setShowMenu(fullScreen);
if (mPopup != null) {
- ((FrameLayout) mRootView).removeView(mPopup);
- mPopup = null;
+ mPopup.dismiss(false);
}
- mVideoMenu.popupDismissed(topLevelPopupOnly);
+ mPopup = new SettingsPopup(popup);
}
public void onShowSwitcherPopup() {
@@ -500,7 +515,6 @@ public class VideoUI implements PieRenderer.PieListener,
@Override
public void onPieOpened(int centerX, int centerY) {
setSwipingEnabled(false);
- dismissPopup(false, true);
}
@Override
@@ -591,9 +605,6 @@ public class VideoUI implements PieRenderer.PieListener,
if (mGestures != null) {
mGestures.setEnabled(toCamera);
}
- if (mPopup != null) {
- dismissPopup(false, toCamera);
- }
if (mRenderOverlay != null) {
// this can not happen in capture mode
mRenderOverlay.setVisibility(toCamera ? View.VISIBLE : View.GONE);