summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/pageindicators/CaretDrawable.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/pageindicators/CaretDrawable.java')
-rw-r--r--src/com/android/launcher3/pageindicators/CaretDrawable.java47
1 files changed, 36 insertions, 11 deletions
diff --git a/src/com/android/launcher3/pageindicators/CaretDrawable.java b/src/com/android/launcher3/pageindicators/CaretDrawable.java
index fcf3d23a2..1451773af 100644
--- a/src/com/android/launcher3/pageindicators/CaretDrawable.java
+++ b/src/com/android/launcher3/pageindicators/CaretDrawable.java
@@ -28,11 +28,11 @@ import com.android.launcher3.R;
import android.graphics.drawable.Drawable;
public class CaretDrawable extends Drawable {
- public static final int LEVEL_CARET_POINTING_UP = 0; // minimum possible level value
- public static final int LEVEL_CARET_POINTING_DOWN = 10000; // maximum possible level value
- public static final int LEVEL_CARET_NEUTRAL = LEVEL_CARET_POINTING_DOWN / 2;
+ public static final float PROGRESS_CARET_POINTING_UP = -1f;
+ public static final float PROGRESS_CARET_POINTING_DOWN = 1f;
+ public static final float PROGRESS_CARET_NEUTRAL = 0;
- private float mCaretProgress;
+ private float mCaretProgress = PROGRESS_CARET_NEUTRAL;
private Paint mShadowPaint = new Paint();
private Paint mCaretPaint = new Paint();
@@ -72,23 +72,48 @@ public class CaretDrawable extends Drawable {
final float left = getBounds().left + (mShadowPaint.getStrokeWidth() / 2);
final float top = getBounds().top + (mShadowPaint.getStrokeWidth() / 2);
+ // When the bounds are square, this will result in a caret with a right angle
final float verticalInset = (height / 4);
final float caretHeight = (height - (verticalInset * 2));
mPath.reset();
- mPath.moveTo(left, top + caretHeight * (1 - mCaretProgress));
- mPath.lineTo(left + (width / 2), top + caretHeight * mCaretProgress);
- mPath.lineTo(left + width, top + caretHeight * (1 - mCaretProgress));
+ mPath.moveTo(left, top + caretHeight * (1 - getNormalizedCaretProgress()));
+ mPath.lineTo(left + (width / 2), top + caretHeight * getNormalizedCaretProgress());
+ mPath.lineTo(left + width, top + caretHeight * (1 - getNormalizedCaretProgress()));
canvas.drawPath(mPath, mShadowPaint);
canvas.drawPath(mPath, mCaretPaint);
}
- @Override
- protected boolean onLevelChange(int level) {
- mCaretProgress = (float) level / (float) LEVEL_CARET_POINTING_DOWN;
+ /**
+ * Sets the caret progress
+ *
+ * @param progress The progress ({@value #PROGRESS_CARET_POINTING_UP} for pointing up,
+ * {@value #PROGRESS_CARET_POINTING_DOWN} for pointing down, {@value #PROGRESS_CARET_NEUTRAL}
+ * for neutral)
+ */
+ public void setCaretProgress(float progress) {
+ mCaretProgress = progress;
invalidateSelf();
- return true;
+ }
+
+ /**
+ * Returns the caret progress
+ *
+ * @return The progress
+ */
+ public float getCaretProgress() {
+ return mCaretProgress;
+ }
+
+ /**
+ * Returns the caret progress normalized to [0..1]
+ *
+ * @return The normalized progress
+ */
+ public float getNormalizedCaretProgress() {
+ return (mCaretProgress - PROGRESS_CARET_POINTING_UP) /
+ (PROGRESS_CARET_POINTING_DOWN - PROGRESS_CARET_POINTING_UP);
}
@Override