summaryrefslogtreecommitdiff
path: root/src/com/android/launcher3/pageindicators
diff options
context:
space:
mode:
authorFederico Baron <fbaron@google.com>2022-09-27 03:31:09 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-09-27 03:31:09 +0000
commitd8b78523caa4c1040b00cd8d2534f38d39243e31 (patch)
treea8e89b77c0b7c51a142975d224042c9e3368eb77 /src/com/android/launcher3/pageindicators
parentaeea6768e6e499206ba904e54694ca48fe1509bc (diff)
parent4f5e573d3a0084e6a76354ded00ab57fe4aa2fdf (diff)
downloadLauncher3-d8b78523caa4c1040b00cd8d2534f38d39243e31.tar.gz
Merge "Replace drawRect with drawable for delightful pagination" into tm-qpr-dev
Diffstat (limited to 'src/com/android/launcher3/pageindicators')
-rw-r--r--src/com/android/launcher3/pageindicators/PageIndicatorDots.java29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
index fb51bf01a7..28e0b68b4c 100644
--- a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
+++ b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
@@ -30,6 +30,7 @@ import android.graphics.Outline;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.RectF;
+import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Property;
import android.view.View;
@@ -84,9 +85,11 @@ public class PageIndicatorDots extends View implements PageIndicator {
};
private final Paint mPaginationPaint;
+ private final Drawable mPageIndicatorDrawable;
private final float mDotRadius;
private final float mCircleGap;
private final float mPageIndicatorSize;
+ private final float mPageIndicatorRadius;
private final boolean mIsRtl;
private int mNumPages;
@@ -125,13 +128,22 @@ public class PageIndicatorDots extends View implements PageIndicator {
mPaginationPaint.setColor(Themes.getAttrColor(context, R.attr.folderPaginationColor));
mDotRadius = getResources().getDimension(R.dimen.page_indicator_dot_size) / 2;
+
if (SHOW_DELIGHTFUL_PAGINATION_FOLDER.get()) {
+ mPageIndicatorSize = getResources().getDimension(
+ R.dimen.page_indicator_size);
+ mPageIndicatorRadius = mPageIndicatorSize / 2;
+ mPageIndicatorDrawable = context.getDrawable(R.drawable.page_indicator);
+ mPageIndicatorDrawable.setBounds(0, 0, (int) mPageIndicatorSize,
+ (int) mPageIndicatorSize);
mCircleGap = DOT_GAP_FACTOR_FLOAT * mDotRadius;
+
} else {
+ mPageIndicatorSize = 0;
+ mPageIndicatorRadius = 0;
+ mPageIndicatorDrawable = null;
mCircleGap = DOT_GAP_FACTOR * mDotRadius;
}
- mPageIndicatorSize = getResources().getDimension(
- R.dimen.page_indicator_current_page_indicator_size);
if (!SHOW_DELIGHTFUL_PAGINATION_FOLDER.get()) {
setOutlineProvider(new MyOutlineProver());
}
@@ -308,16 +320,19 @@ public class PageIndicatorDots extends View implements PageIndicator {
mPaginationPaint.setAlpha(PAGE_INDICATOR_ALPHA);
if (SHOW_DELIGHTFUL_PAGINATION_FOLDER.get()) {
RectF currRect = getActiveRect();
- int scrollPerPage = getScrollPerPage();
+ // Moves the canvas to start at the top left corner of the page indicator
+ canvas.translate(currRect.left, currRect.top);
+
+ int scrollPerPage = getScrollPerPage();
// This IF is to avoid division by 0
if (scrollPerPage != 0) {
int delta = mCurrentScroll % scrollPerPage;
canvas.rotate((INDICATOR_ROTATION * delta) / scrollPerPage,
- currRect.centerX(), currRect.centerY());
+ mPageIndicatorRadius, mPageIndicatorRadius);
}
- canvas.drawRect(currRect, mPaginationPaint);
+ mPageIndicatorDrawable.draw(canvas);
} else {
canvas.drawRoundRect(getActiveRect(), mDotRadius, mDotRadius, mPaginationPaint);
}
@@ -334,7 +349,7 @@ public class PageIndicatorDots extends View implements PageIndicator {
float startXIndicator =
((getWidth() - (mNumPages * mCircleGap) + mDotRadius) / 2) - getOffset();
float indicatorPosition = startXIndicator + getIndicatorScrollDistance()
- + (mPageIndicatorSize / 2);
+ + mPageIndicatorRadius;
// If the indicator gets close enough to a dot then we change the radius
// of the dot based on how close the indicator is to it.
@@ -391,7 +406,7 @@ public class PageIndicatorDots extends View implements PageIndicator {
* the indicator is centered in with the indicator circles
*/
private float getOffset() {
- return (mPageIndicatorSize / 2) - mDotRadius;
+ return mPageIndicatorRadius - mDotRadius;
}
/**