diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2016-01-28 00:30:06 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-01-28 00:30:06 +0000 |
commit | 6362683acb884ec72fe10f1cf394d178d3918a96 (patch) | |
tree | 27a8b87708a2a507aec891eac853ede938096146 | |
parent | 3fc648d3b792f63d3b99509300a602d23c842433 (diff) | |
parent | 8bf6f311e8a6b711e576d2a48d174d508d85f714 (diff) | |
download | android_packages_apps_Trebuchet-6362683acb884ec72fe10f1cf394d178d3918a96.tar.gz android_packages_apps_Trebuchet-6362683acb884ec72fe10f1cf394d178d3918a96.tar.bz2 android_packages_apps_Trebuchet-6362683acb884ec72fe10f1cf394d178d3918a96.zip |
Merge "Removing unnecessary new object creation in dispatchDraw" into ub-launcher3-burnaby-polish
-rw-r--r-- | src/com/android/launcher3/PagedView.java | 38 |
1 files changed, 13 insertions, 25 deletions
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index 900d5e84a..2dcff35b5 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -28,6 +28,7 @@ import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Rect; +import android.graphics.RectF; import android.os.Build; import android.os.Bundle; import android.os.Parcel; @@ -87,8 +88,6 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc private int mFreeScrollMinScrollX = -1; private int mFreeScrollMaxScrollX = -1; - static final int AUTOMATIC_PAGE_SPACING = -1; - protected int mFlingThresholdVelocity; protected int mMinFlingVelocity; protected int mMinSnapVelocity; @@ -133,8 +132,6 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc protected final static int TOUCH_STATE_NEXT_PAGE = 3; protected final static int TOUCH_STATE_REORDERING = 4; - protected final static float ALPHA_QUANTIZE_LEVEL = 0.0001f; - protected int mTouchState = TOUCH_STATE_REST; protected boolean mForceScreenScrolled = false; @@ -144,12 +141,9 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc private int mMaximumVelocity; protected int mPageLayoutWidthGap; protected int mPageLayoutHeightGap; - protected int mCellCountX = 0; - protected int mCellCountY = 0; protected boolean mCenterPagesVertically; protected boolean mAllowOverScroll = true; protected int[] mTempVisiblePagesRange = new int[2]; - protected boolean mForceDrawAllChildrenNextFrame; protected static final int INVALID_POINTER = -1; @@ -198,6 +192,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc private static final float[] sTmpPoint = new float[2]; private static final int[] sTmpIntPoint = new int[2]; private static final Rect sTmpRect = new Rect(); + private static final RectF sTmpRectF = new RectF(); protected final Rect mInsets = new Rect(); protected final boolean mIsRtl; @@ -1057,38 +1052,33 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc protected void getVisiblePages(int[] range) { final int pageCount = getChildCount(); - sTmpIntPoint[0] = sTmpIntPoint[1] = 0; - range[0] = -1; range[1] = -1; if (pageCount > 0) { - int viewportWidth = getViewportWidth(); + final int visibleLeft = -getLeft(); + final int visibleRight = visibleLeft + getViewportWidth(); int curScreen = 0; int count = getChildCount(); for (int i = 0; i < count; i++) { View currPage = getPageAt(i); - sTmpIntPoint[0] = 0; - Utilities.getDescendantCoordRelativeToParent(currPage, this, sTmpIntPoint, false); - if (sTmpIntPoint[0] > viewportWidth) { - if (range[0] == -1) { - continue; - } else { - break; - } - } + // Verify if the page bounds are within the visible range. + sTmpRectF.left = 0; + sTmpRectF.right = currPage.getMeasuredWidth(); + currPage.getMatrix().mapRect(sTmpRectF); + sTmpRectF.offset(currPage.getLeft() - getScrollX(), 0); + getMatrix().mapRect(sTmpRectF); - sTmpIntPoint[0] = currPage.getMeasuredWidth(); - Utilities.getDescendantCoordRelativeToParent(currPage, this, sTmpIntPoint, false); - if (sTmpIntPoint[0] < 0) { + if (sTmpRectF.left > visibleRight || sTmpRectF.right < visibleLeft) { if (range[0] == -1) { continue; } else { break; } } + curScreen = i; if (range[0] < 0) { range[0] = curScreen; @@ -1136,8 +1126,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc for (int i = pageCount - 1; i >= 0; i--) { final View v = getPageAt(i); if (v == mDragView) continue; - if (mForceDrawAllChildrenNextFrame || - (leftScreen <= i && i <= rightScreen && shouldDrawChild(v))) { + if (leftScreen <= i && i <= rightScreen && shouldDrawChild(v)) { drawChild(canvas, v, drawingTime); } } @@ -1146,7 +1135,6 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc drawChild(canvas, mDragView, drawingTime); } - mForceDrawAllChildrenNextFrame = false; canvas.restore(); } } |