diff options
8 files changed, 75 insertions, 47 deletions
diff --git a/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java b/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java index 56adcb1e9..4200ec75e 100644 --- a/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java +++ b/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java @@ -22,6 +22,7 @@ import android.hardware.Camera; import android.os.Build; import android.provider.MediaStore.MediaColumns; import android.view.View; +import android.view.WindowManager; import java.lang.reflect.Field; @@ -179,6 +180,9 @@ public class ApiHelper { public static final boolean HAS_GLES20_REQUIRED = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB; + public static final boolean HAS_ROTATION_ANIMATION = + hasField(WindowManager.LayoutParams.class, "rotationAnimation"); + public static int getIntFieldIfExists(Class<?> klass, String fieldName, Class<?> obj, int defaultVal) { try { diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index a207b2b71..b5ff0114c 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -19,8 +19,8 @@ package com.android.camera; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; -import android.content.Context; import android.content.ComponentName; +import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.content.pm.ActivityInfo; @@ -30,13 +30,14 @@ import android.os.Bundle; import android.os.IBinder; import android.provider.MediaStore; import android.provider.Settings; -import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.OrientationEventListener; import android.view.View; import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; import android.widget.FrameLayout; import com.android.camera.ui.CameraSwitcher; @@ -62,6 +63,7 @@ public class CameraActivity extends ActivityBase private int mCurrentModuleIndex; private MotionEvent mDown; private boolean mAutoRotateScreen; + private int mHeightOrWidth = -1; private MyOrientationEventListener mOrientationListener; // The degrees of the device rotated clockwise from its natural orientation. @@ -299,6 +301,15 @@ public class CameraActivity extends ActivityBase super.onConfigurationChanged(config); ViewGroup appRoot = (ViewGroup) findViewById(R.id.content); + boolean landscape = (config.orientation == Configuration.ORIENTATION_LANDSCAPE); + FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) appRoot.getLayoutParams(); + if (landscape) { + lp.rightMargin = getResources().getDimensionPixelSize(R.dimen.margin_systemui_offset); + } else { + lp.rightMargin = 0; + } + appRoot.setLayoutParams(lp); + // remove old switcher, shutter and shutter icon View cameraControlsView = findViewById(R.id.camera_shutter_switcher); appRoot.removeView(cameraControlsView); @@ -362,9 +373,23 @@ public class CameraActivity extends ActivityBase hideUI(); } super.onFullScreenChanged(full); + if (ApiHelper.HAS_ROTATION_ANIMATION) { + setRotationAnimation(full); + } mCurrentModule.onFullScreenChanged(full); } + private void setRotationAnimation(boolean fullscreen) { + int rotationAnimation = WindowManager.LayoutParams.ROTATION_ANIMATION_ROTATE; + if (fullscreen) { + rotationAnimation = WindowManager.LayoutParams.ROTATION_ANIMATION_CROSSFADE; + } + Window win = getWindow(); + WindowManager.LayoutParams winParams = win.getAttributes(); + winParams.rotationAnimation = rotationAnimation; + win.setAttributes(winParams); + } + @Override protected void onStop() { super.onStop(); diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java index fd30ac080..92aed8425 100644 --- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java +++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java @@ -521,9 +521,12 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, if (mLoadBitmapTask != null) { mLoadBitmapTask.cancel(false); } + // TODO: Using singletons is a bad design choice for many of these + // due static reference leaks and in general. Please refactor. MasterImage.reset(); FilteringPipeline.reset(); ImageFilter.resetStatics(); + FiltersManager.reset(); super.onDestroy(); } diff --git a/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java b/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java index 0e735bfa9..9c6415bc9 100644 --- a/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java +++ b/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java @@ -22,7 +22,6 @@ import android.os.Process; import android.support.v8.renderscript.*; import android.util.Log; -import com.android.gallery3d.filtershow.filters.BaseFiltersManager; import com.android.gallery3d.filtershow.filters.FiltersManager; import com.android.gallery3d.filtershow.filters.ImageFilterRS; import com.android.gallery3d.filtershow.imageshow.GeometryMetadata; diff --git a/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java b/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java index 377bd2b6f..4dbf91a33 100644 --- a/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java +++ b/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java @@ -13,49 +13,37 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.android.gallery3d.filtershow.filters; -import com.android.gallery3d.filtershow.cache.ImageLoader; - import java.util.HashMap; +import java.util.Map; import java.util.Vector; -public class BaseFiltersManager { - - private static final String LOGTAG = "BaseFiltersManager"; - private static HashMap<Class, ImageFilter> mFilters = new HashMap<Class, ImageFilter>(); - - protected BaseFiltersManager() { - Vector<ImageFilter> filters = new Vector<ImageFilter>(); - addFilters(filters); - for (ImageFilter filter : filters) { - mFilters.put(filter.getClass(), filter); - } - } +public abstract class BaseFiltersManager { + protected HashMap<Class, ImageFilter> mFilters = null; - protected void addFilters(Vector<ImageFilter> filters) { - filters.add(new ImageFilterTinyPlanet()); - filters.add(new ImageFilterRedEye()); - filters.add(new ImageFilterWBalance()); - filters.add(new ImageFilterExposure()); - filters.add(new ImageFilterVignette()); - filters.add(new ImageFilterContrast()); - filters.add(new ImageFilterShadows()); - filters.add(new ImageFilterHighlights()); - filters.add(new ImageFilterVibrance()); - filters.add(new ImageFilterSharpen()); - filters.add(new ImageFilterCurves()); - filters.add(new ImageFilterDraw()); - filters.add(new ImageFilterHue()); - filters.add(new ImageFilterSaturated()); - filters.add(new ImageFilterBwFilter()); - filters.add(new ImageFilterNegative()); - filters.add(new ImageFilterEdge()); - filters.add(new ImageFilterKMeans()); - filters.add(new ImageFilterFx()); - filters.add(new ImageFilterBorder()); - filters.add(new ImageFilterParametricBorder()); + protected void addFilters(Map<Class, ImageFilter> filters) { + filters.put(ImageFilterTinyPlanet.class, new ImageFilterTinyPlanet()); + filters.put(ImageFilterRedEye.class, new ImageFilterRedEye()); + filters.put(ImageFilterWBalance.class, new ImageFilterWBalance()); + filters.put(ImageFilterExposure.class, new ImageFilterExposure()); + filters.put(ImageFilterVignette.class, new ImageFilterVignette()); + filters.put(ImageFilterContrast.class, new ImageFilterContrast()); + filters.put(ImageFilterShadows.class, new ImageFilterShadows()); + filters.put(ImageFilterHighlights.class, new ImageFilterHighlights()); + filters.put(ImageFilterVibrance.class, new ImageFilterVibrance()); + filters.put(ImageFilterSharpen.class, new ImageFilterSharpen()); + filters.put(ImageFilterCurves.class, new ImageFilterCurves()); + filters.put(ImageFilterDraw.class, new ImageFilterDraw()); + filters.put(ImageFilterHue.class, new ImageFilterHue()); + filters.put(ImageFilterSaturated.class, new ImageFilterSaturated()); + filters.put(ImageFilterBwFilter.class, new ImageFilterBwFilter()); + filters.put(ImageFilterNegative.class, new ImageFilterNegative()); + filters.put(ImageFilterEdge.class, new ImageFilterEdge()); + filters.put(ImageFilterKMeans.class, new ImageFilterKMeans()); + filters.put(ImageFilterFx.class, new ImageFilterFx()); + filters.put(ImageFilterBorder.class, new ImageFilterBorder()); + filters.put(ImageFilterParametricBorder.class, new ImageFilterParametricBorder()); } public ImageFilter getFilter(Class c) { @@ -79,7 +67,7 @@ public class BaseFiltersManager { } public void addLooks(Vector<FilterRepresentation> representations) { - // subclass can add representations + // Override } public void addEffects(Vector<FilterRepresentation> representations) { diff --git a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java index 752f72dcb..15fa8ca1a 100644 --- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java +++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java @@ -22,7 +22,6 @@ import android.util.Log; import com.android.gallery3d.filtershow.ImageStateAdapter; import com.android.gallery3d.filtershow.cache.ImageLoader; -import com.android.gallery3d.filtershow.filters.BaseFiltersManager; import com.android.gallery3d.filtershow.filters.FilterRepresentation; import com.android.gallery3d.filtershow.filters.FiltersManager; import com.android.gallery3d.filtershow.filters.ImageFilter; diff --git a/src/com/android/gallery3d/filtershow/ui/ImageCurves.java b/src/com/android/gallery3d/filtershow/ui/ImageCurves.java index e54c83eff..3e52f5ee5 100644 --- a/src/com/android/gallery3d/filtershow/ui/ImageCurves.java +++ b/src/com/android/gallery3d/filtershow/ui/ImageCurves.java @@ -35,7 +35,6 @@ import android.widget.PopupMenu; import com.android.gallery3d.R; import com.android.gallery3d.filtershow.editors.EditorCurves; -import com.android.gallery3d.filtershow.filters.BaseFiltersManager; import com.android.gallery3d.filtershow.filters.FilterCurvesRepresentation; import com.android.gallery3d.filtershow.filters.FiltersManager; import com.android.gallery3d.filtershow.filters.ImageFilterCurves; diff --git a/src_pd/com/android/gallery3d/filtershow/filters/FiltersManager.java b/src_pd/com/android/gallery3d/filtershow/filters/FiltersManager.java index 988cf2d81..b05b54670 100644 --- a/src_pd/com/android/gallery3d/filtershow/filters/FiltersManager.java +++ b/src_pd/com/android/gallery3d/filtershow/filters/FiltersManager.java @@ -16,13 +16,24 @@ package com.android.gallery3d.filtershow.filters; +import java.util.HashMap; + public class FiltersManager extends BaseFiltersManager { - private static FiltersManager gInstance = null; + private static FiltersManager sInstance = null; + + protected FiltersManager() { + mFilters = new HashMap<Class, ImageFilter>(); + addFilters(mFilters); + } public static FiltersManager getManager() { - if (gInstance == null) { - gInstance = new FiltersManager(); + if (sInstance == null) { + sInstance = new FiltersManager(); } - return gInstance; + return sInstance; + } + + public static void reset() { + sInstance = null; } } |