From 53aedc0ee671c2d11341a66c444bbb6cdc97b150 Mon Sep 17 00:00:00 2001 From: Angus Kong Date: Thu, 10 Oct 2013 16:46:04 -0700 Subject: Avoid unnecessary bringChildToFront() calls. bug:10750719 Change-Id: I831d9ecead91d64c7a0b6a665e9c842ef17d8a8a --- src/com/android/camera/ui/FilmStripView.java | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'src/com/android/camera/ui/FilmStripView.java') diff --git a/src/com/android/camera/ui/FilmStripView.java b/src/com/android/camera/ui/FilmStripView.java index b6f83adf1..788881823 100644 --- a/src/com/android/camera/ui/FilmStripView.java +++ b/src/com/android/camera/ui/FilmStripView.java @@ -42,6 +42,7 @@ import com.android.camera.CameraActivity; import com.android.camera.data.LocalData; import com.android.camera.ui.FilmStripView.ImageData.PanoramaSupportCallback; import com.android.camera.ui.FilmstripBottomControls.BottomControlsListener; +import com.android.camera.util.CameraUtil; import com.android.camera.util.PhotoSphereHelper.PanoramaViewHelper; import com.android.camera2.R; @@ -878,16 +879,17 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener { // not in transition. return; } - int nearest = findTheNearestView(mCenterX); + final int nearest = findTheNearestView(mCenterX); // no change made. - if (nearest == -1 || nearest == mCurrentItem) + if (nearest == -1 || nearest == mCurrentItem) { return; + } // Going to change the current item, notify the listener. if (mListener != null) { mListener.onCurrentDataChanged(mViewItem[mCurrentItem].getId(), false); } - int adjust = nearest - mCurrentItem; + final int adjust = nearest - mCurrentItem; if (adjust > 0) { for (int k = 0; k < adjust; k++) { removeItem(k); @@ -901,6 +903,7 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener { mViewItem[k] = buildItemFromData(mViewItem[k - 1].getId() + 1); } } + adjustChildZOrder(); } else { for (int k = BUFFER_SIZE - 1; k >= BUFFER_SIZE + adjust; k--) { removeItem(k); @@ -915,6 +918,7 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener { } } } + invalidate(); if (mListener != null) { mListener.onCurrentDataChanged(mViewItem[mCurrentItem].getId(), true); } @@ -953,6 +957,10 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener { return stopScroll; } + /** + * Reorders the child views to be consistent with their data ID. This + * method should be called after adding/removing views. + */ private void adjustChildZOrder() { for (int i = BUFFER_SIZE - 1; i >= 0; i--) { if (mViewItem[i] == null) @@ -1325,7 +1333,6 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener { } stepIfNeeded(); - adjustChildZOrder(); updateBottomControls(false /* no forced update */); mLastItemId = getCurrentId(); } @@ -1538,6 +1545,7 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener { } }) .start(); + adjustChildZOrder(); invalidate(); } @@ -1625,6 +1633,7 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener { .setInterpolator(mViewAnimInterpolator) .setDuration(GEOMETRY_ADJUST_TIME_MS) .start(); + adjustChildZOrder(); invalidate(); } @@ -1740,6 +1749,8 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener { if (clampCenterX()) { mController.stopScrolling(true); } + adjustChildZOrder(); + invalidate(); } /** Some of the data is changed. */ @@ -1801,6 +1812,7 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener { } } } + adjustChildZOrder(); // Request a layout to find the measured width/height of the view first. requestLayout(); // Update photo sphere visibility after metadata fully written. @@ -1855,6 +1867,7 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener { mCenterX = -1; mScale = FULL_SCREEN_SCALE; + adjustChildZOrder(); invalidate(); if (mListener != null) { -- cgit v1.2.3