Loading iconloaderlib/src/com/android/launcher3/icons/DotRenderer.java +17 −34 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ public class DotRenderer { } ShadowGenerator.Builder builder = new ShadowGenerator.Builder(Color.TRANSPARENT); builder.ambientShadowAlpha = 88; mBackgroundWithShadow = builder.setupBlurForSize(size).createPill(size, size); mBackgroundWithShadow = builder.setupBlurForSize(size).createPill(size, displayCount ? (size - 25) : size); mCircleRadius = builder.radius; mBitmapOffset = -mBackgroundWithShadow.getHeight() * 0.5f; // Same as width. Loading Loading @@ -164,27 +164,32 @@ public class DotRenderer { mCirclePaint.setColor(params.dotColor); mCircleShadowPaint.setColor(params.shadowDotColor); if (numNotifications > 9 && numNotifications < 100) { canvas.drawRoundRect(new RectF(-mCircleRadius - 10, -mCircleRadius, mCircleRadius + 10, mCircleRadius + 3), 50, 50, mCircleShadowPaint); canvas.drawRoundRect(new RectF(-mCircleRadius - 10, -mCircleRadius, mCircleRadius + 10, mCircleRadius), 50, 50, mCirclePaint); } else if (numNotifications > 99 && numNotifications < 1000) { canvas.drawRoundRect(new RectF(-mCircleRadius - 20, -mCircleRadius, mCircleRadius + 20, mCircleRadius + 3), 50, 50, mCircleShadowPaint); canvas.drawRoundRect(new RectF(-mCircleRadius - 20, -mCircleRadius, mCircleRadius + 20, mCircleRadius), 50, 50, mCirclePaint); if (numNotifications >= 10 && numNotifications < 1000) { canvas.drawRoundRect(new RectF(-mCircleRadius + 10, -mCircleRadius, mCircleRadius + 20, mCircleRadius), 50, 50, mCircleShadowPaint); canvas.drawRoundRect(new RectF(-mCircleRadius + 10, -mCircleRadius, mCircleRadius + 20, mCircleRadius), 50, 50, mCirclePaint); } else { canvas.drawCircle(0, 3, mCircleRadius, mCircleShadowPaint); canvas.drawCircle(0, 0, mCircleRadius, mCirclePaint); canvas.drawCircle(5, 10, mCircleRadius, mCircleShadowPaint); canvas.drawCircle(5, 10, mCircleRadius, mCirclePaint); } if (mDisplayCount && numNotifications > 0) { // Draw the numNotifications text mTextPaint.setColor(getCounterTextColor(Color.WHITE)); mTextPaint.setTextSize(42f); mTextPaint.setTypeface(Typeface.DEFAULT_BOLD); mTextPaint.setTextSize(32f); String text = numToNotation(numNotifications); mTextPaint.getTextBounds(text, 0, text.length(), mTextRect); float x = (-mTextRect.width() / 2f - mTextRect.left) * getAdjustment(numNotifications); float y = mTextRect.height() / 2f - mTextRect.bottom; canvas.drawText(text, x, y, mTextPaint); if (numNotifications < 10) { canvas.drawText(text, -4f, 22f, mTextPaint); } else if (numNotifications < 100) { canvas.drawText(text, -4f, y, mTextPaint); } else if (numNotifications >= 1000) { canvas.drawText(text, -14f, 20f, mTextPaint); } else { canvas.drawText(text, -14f, y, mTextPaint); } } canvas.restore(); Loading Loading @@ -227,26 +232,4 @@ public class DotRenderer { @ViewDebug.ExportedProperty(category = "notification dot", formatToHexString = true) public int shadowDotColor; } /** * An attempt to adjust digits to their perceived center, they were tuned with Roboto but should * (hopefully) work with other OEM fonts as well. */ private float getAdjustment(int number) { switch (number) { case 1: return 1.01f; case 2: return 0.99f; case 3: case 4: case 6: return 0.98f; case 7: return 1.02f; case 9: return 0.9f; } return 1f; } } Loading
iconloaderlib/src/com/android/launcher3/icons/DotRenderer.java +17 −34 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ public class DotRenderer { } ShadowGenerator.Builder builder = new ShadowGenerator.Builder(Color.TRANSPARENT); builder.ambientShadowAlpha = 88; mBackgroundWithShadow = builder.setupBlurForSize(size).createPill(size, size); mBackgroundWithShadow = builder.setupBlurForSize(size).createPill(size, displayCount ? (size - 25) : size); mCircleRadius = builder.radius; mBitmapOffset = -mBackgroundWithShadow.getHeight() * 0.5f; // Same as width. Loading Loading @@ -164,27 +164,32 @@ public class DotRenderer { mCirclePaint.setColor(params.dotColor); mCircleShadowPaint.setColor(params.shadowDotColor); if (numNotifications > 9 && numNotifications < 100) { canvas.drawRoundRect(new RectF(-mCircleRadius - 10, -mCircleRadius, mCircleRadius + 10, mCircleRadius + 3), 50, 50, mCircleShadowPaint); canvas.drawRoundRect(new RectF(-mCircleRadius - 10, -mCircleRadius, mCircleRadius + 10, mCircleRadius), 50, 50, mCirclePaint); } else if (numNotifications > 99 && numNotifications < 1000) { canvas.drawRoundRect(new RectF(-mCircleRadius - 20, -mCircleRadius, mCircleRadius + 20, mCircleRadius + 3), 50, 50, mCircleShadowPaint); canvas.drawRoundRect(new RectF(-mCircleRadius - 20, -mCircleRadius, mCircleRadius + 20, mCircleRadius), 50, 50, mCirclePaint); if (numNotifications >= 10 && numNotifications < 1000) { canvas.drawRoundRect(new RectF(-mCircleRadius + 10, -mCircleRadius, mCircleRadius + 20, mCircleRadius), 50, 50, mCircleShadowPaint); canvas.drawRoundRect(new RectF(-mCircleRadius + 10, -mCircleRadius, mCircleRadius + 20, mCircleRadius), 50, 50, mCirclePaint); } else { canvas.drawCircle(0, 3, mCircleRadius, mCircleShadowPaint); canvas.drawCircle(0, 0, mCircleRadius, mCirclePaint); canvas.drawCircle(5, 10, mCircleRadius, mCircleShadowPaint); canvas.drawCircle(5, 10, mCircleRadius, mCirclePaint); } if (mDisplayCount && numNotifications > 0) { // Draw the numNotifications text mTextPaint.setColor(getCounterTextColor(Color.WHITE)); mTextPaint.setTextSize(42f); mTextPaint.setTypeface(Typeface.DEFAULT_BOLD); mTextPaint.setTextSize(32f); String text = numToNotation(numNotifications); mTextPaint.getTextBounds(text, 0, text.length(), mTextRect); float x = (-mTextRect.width() / 2f - mTextRect.left) * getAdjustment(numNotifications); float y = mTextRect.height() / 2f - mTextRect.bottom; canvas.drawText(text, x, y, mTextPaint); if (numNotifications < 10) { canvas.drawText(text, -4f, 22f, mTextPaint); } else if (numNotifications < 100) { canvas.drawText(text, -4f, y, mTextPaint); } else if (numNotifications >= 1000) { canvas.drawText(text, -14f, 20f, mTextPaint); } else { canvas.drawText(text, -14f, y, mTextPaint); } } canvas.restore(); Loading Loading @@ -227,26 +232,4 @@ public class DotRenderer { @ViewDebug.ExportedProperty(category = "notification dot", formatToHexString = true) public int shadowDotColor; } /** * An attempt to adjust digits to their perceived center, they were tuned with Roboto but should * (hopefully) work with other OEM fonts as well. */ private float getAdjustment(int number) { switch (number) { case 1: return 1.01f; case 2: return 0.99f; case 3: case 4: case 6: return 0.98f; case 7: return 1.02f; case 9: return 0.9f; } return 1f; } }