diff options
author | Sascha Haeberling <haeberling@google.com> | 2013-09-13 11:58:33 -0700 |
---|---|---|
committer | Sascha Haeberling <haeberling@google.com> | 2013-09-18 10:09:04 -0700 |
commit | 4ed20592482d2ab2f3f48ee72d5b1c06bf009034 (patch) | |
tree | 94f8823e5bd44e66ad4566780ce0884502726ac1 /src | |
parent | e1f0f4f1bce2a8d0dca3856aa0211dcfffb74abc (diff) | |
download | android_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.java | 48 | ||||
-rw-r--r-- | src/com/android/camera/ui/CameraRootView.java | 31 |
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() { |