summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSascha Haeberling <haeberling@google.com>2013-09-13 11:58:33 -0700
committerSascha Haeberling <haeberling@google.com>2013-09-18 10:09:04 -0700
commit4ed20592482d2ab2f3f48ee72d5b1c06bf009034 (patch)
tree94f8823e5bd44e66ad4566780ce0884502726ac1 /src
parente1f0f4f1bce2a8d0dca3856aa0211dcfffb74abc (diff)
downloadandroid_packages_apps_Snap-4ed20592482d2ab2f3f48ee72d5b1c06bf009034.tar.gz
android_packages_apps_Snap-4ed20592482d2ab2f3f48ee72d5b1c06bf009034.tar.bz2
android_packages_apps_Snap-4ed20592482d2ab2f3f48ee72d5b1c06bf009034.zip
Adding Hideybar support for K and up.
Bug: 10723047 Change-Id: Ie1d0bdadfbe6dee6a4e0998facac61ff1fb6e02a
Diffstat (limited to 'src')
-rw-r--r--src/com/android/camera/CameraActivity.java48
-rw-r--r--src/com/android/camera/ui/CameraRootView.java31
2 files changed, 57 insertions, 22 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 013b10fe8..f545bbdc7 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -19,12 +19,10 @@ package com.android.camera;
import android.animation.Animator;
import android.app.ActionBar;
import android.app.Activity;
-import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
-import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
@@ -34,6 +32,7 @@ import android.content.res.Configuration;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.AsyncTask;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
@@ -84,6 +83,12 @@ public class CameraActivity extends Activity
private static final String TAG = "CAM_Activity";
+ /**
+ * The visibility flags to use to switch the system in either lights-out
+ * mode (pre-K) or hideybar mode (K and up).
+ */
+ private static final int IMMERSIVE_FLAGS = getImmersiveFlags();
+
private static final String INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE =
"android.media.action.STILL_IMAGE_CAMERA_SECURE";
public static final String ACTION_IMAGE_CAPTURE_SECURE =
@@ -170,10 +175,6 @@ public class CameraActivity extends Activity
private Intent mVideoShareIntent;
private Intent mImageShareIntent;
- public void gotoGallery() {
- mFilmStripView.getController().goToNextItem();
- }
-
private class MyOrientationEventListener
extends OrientationEventListener {
public MyOrientationEventListener(Context context) {
@@ -248,6 +249,25 @@ public class CameraActivity extends Activity
}
}
+ private static int getImmersiveFlags() {
+ if (isKitKatOrHigher()) {
+ return View.SYSTEM_UI_FLAG_IMMERSIVE
+ | View.SYSTEM_UI_FLAG_TRANSPARENT_STATUS
+ | View.SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION
+ | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_FULLSCREEN;
+ } else {
+ // Pre-KitKat we use lights-out mode.
+ return View.SYSTEM_UI_FLAG_LOW_PROFILE;
+ }
+ }
+
+ public static boolean isKitKatOrHigher() {
+ // TODO: Remove CODENAME check as soon as VERSION_CODES.KITKAT is final.
+ return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
+ || "KeyLimePie".equals(Build.VERSION.CODENAME);
+ }
+
public static boolean isFirstStartAfterScreenOn() {
return sFirstStartAfterScreenOn;
}
@@ -347,31 +367,37 @@ public class CameraActivity extends Activity
public boolean onToggleActionBarVisibility(int dataID) {
if (mActionBar.isShowing()) {
setActionBarVisibilityAndLightsOut(true);
+ return false;
} else {
// Don't show the action bar if that is the camera preview.
boolean isCameraID = isCameraPreview(dataID);
if (!isCameraID) {
setActionBarVisibilityAndLightsOut(false);
+ return true;
}
+ return false;
}
- return mActionBar.isShowing();
}
};
+ public void gotoGallery() {
+ mFilmStripView.getController().goToNextItem();
+ }
+
/**
* If enabled, this hides the action bar and switches the system UI to
* lights-out mode.
*/
private void setActionBarVisibilityAndLightsOut(boolean enabled) {
+ int visibility = DEFAULT_SYSTEM_UI_VISIBILITY | (enabled ? IMMERSIVE_FLAGS
+ : View.SYSTEM_UI_FLAG_VISIBLE);
+ mAboveFilmstripControlLayout
+ .setSystemUiVisibility(visibility);
if (enabled) {
mActionBar.hide();
} else {
mActionBar.show();
}
- int visibility = DEFAULT_SYSTEM_UI_VISIBILITY | (enabled ? View.SYSTEM_UI_FLAG_LOW_PROFILE
- : View.SYSTEM_UI_FLAG_VISIBLE);
- mAboveFilmstripControlLayout
- .setSystemUiVisibility(visibility);
}
private void hidePanoStitchingProgress() {
diff --git a/src/com/android/camera/ui/CameraRootView.java b/src/com/android/camera/ui/CameraRootView.java
index 75d08428b..49a157568 100644
--- a/src/com/android/camera/ui/CameraRootView.java
+++ b/src/com/android/camera/ui/CameraRootView.java
@@ -27,6 +27,7 @@ import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
+import com.android.camera.CameraActivity;
import com.android.camera.util.CameraUtil;
import com.android.camera.util.ApiHelper;
@@ -41,6 +42,10 @@ public class CameraRootView extends FrameLayout {
private int mOffset = 0;
private Object mDisplayListener;
private MyDisplayListener mListener;
+
+ // Hideybars are available on K and up.
+ private static final boolean HIDEYBARS_ENABLED = CameraActivity.isKitKatOrHigher();
+
public interface MyDisplayListener {
public void onDisplayChanged();
}
@@ -54,18 +59,22 @@ public class CameraRootView extends FrameLayout {
@Override
protected boolean fitSystemWindows(Rect insets) {
- super.fitSystemWindows(insets);
- mCurrentInsets = insets;
- // insets include status bar, navigation bar, etc
- // In this case, we are only concerned with the size of nav bar
- if (mOffset > 0) return true;
-
- if (insets.bottom > 0) {
- mOffset = insets.bottom;
- } else if (insets.right > 0) {
- mOffset = insets.right;
+ if (!HIDEYBARS_ENABLED) {
+ mCurrentInsets = insets;
+ // insets include status bar, navigation bar, etc
+ // In this case, we are only concerned with the size of nav bar
+ if (mOffset > 0) {
+ return true;
+ }
+
+ if (insets.bottom > 0) {
+ mOffset = insets.bottom;
+ } else if (insets.right > 0) {
+ mOffset = insets.right;
+ }
+ return true;
}
- return true;
+ return super.fitSystemWindows(insets);
}
public void initDisplayListener() {