summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2016-01-23 14:40:35 -0800
committerSunny Goyal <sunnygoyal@google.com>2016-01-23 14:42:25 -0800
commit8bf6f311e8a6b711e576d2a48d174d508d85f714 (patch)
tree32639e6bcf331c16e069d366a44251c69c1d3319 /src
parenta5cfbe807503bf4c2d5853f700191fef34fb3713 (diff)
downloadandroid_packages_apps_Trebuchet-8bf6f311e8a6b711e576d2a48d174d508d85f714.tar.gz
android_packages_apps_Trebuchet-8bf6f311e8a6b711e576d2a48d174d508d85f714.tar.bz2
android_packages_apps_Trebuchet-8bf6f311e8a6b711e576d2a48d174d508d85f714.zip
Removing unnecessary new object creation in dispatchDraw
dispatchDraw was calling getVisiblePages which in turn calls getDescendantCoordRelativeToParent and created multiple new abjects Change-Id: I401fec076183979d30dfdbbdc02a57bd79f3886d
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/PagedView.java38
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();
}
}