summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/graphics
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2017-04-28 07:28:13 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-04-28 07:28:14 +0000
commitb4c2f07cd30242733c63604afd4667417284d309 (patch)
tree338339bc03ead14f0f6a38adaf78c401b92663fe /src/com/android/launcher3/graphics
parentf77a6f7fd75243999912d040470a543e825d6d12 (diff)
parent9cb48d4a3896c86e347565646086ab4ef726d60c (diff)
downloadandroid_packages_apps_Trebuchet-b4c2f07cd30242733c63604afd4667417284d309.tar.gz
android_packages_apps_Trebuchet-b4c2f07cd30242733c63604afd4667417284d309.tar.bz2
android_packages_apps_Trebuchet-b4c2f07cd30242733c63604afd4667417284d309.zip
Merge "When creating bitmap, do not apply width/height ratio if AdaptiveIconDrawable b/37670867" into ub-launcher3-dorval
Diffstat (limited to 'src/com/android/launcher3/graphics')
-rw-r--r--src/com/android/launcher3/graphics/FixedScaleDrawable.java17
-rw-r--r--src/com/android/launcher3/graphics/LauncherIcons.java20
2 files changed, 24 insertions, 13 deletions
diff --git a/src/com/android/launcher3/graphics/FixedScaleDrawable.java b/src/com/android/launcher3/graphics/FixedScaleDrawable.java
index 7ee3d8002..262a95e2b 100644
--- a/src/com/android/launcher3/graphics/FixedScaleDrawable.java
+++ b/src/com/android/launcher3/graphics/FixedScaleDrawable.java
@@ -19,17 +19,18 @@ public class FixedScaleDrawable extends DrawableWrapper {
// TODO b/33553066 use the constant defined in MaskableIconDrawable
private static final float LEGACY_ICON_SCALE = .7f * .6667f;
- private float mScale;
+ private float mScaleX, mScaleY;
public FixedScaleDrawable() {
super(new ColorDrawable());
- mScale = LEGACY_ICON_SCALE;
+ mScaleX = LEGACY_ICON_SCALE;
+ mScaleY = LEGACY_ICON_SCALE;
}
@Override
public void draw(Canvas canvas) {
int saveCount = canvas.save(Canvas.MATRIX_SAVE_FLAG);
- canvas.scale(mScale, mScale,
+ canvas.scale(mScaleX, mScaleY,
getBounds().exactCenterX(), getBounds().exactCenterY());
super.draw(canvas);
canvas.restoreToCount(saveCount);
@@ -42,6 +43,14 @@ public class FixedScaleDrawable extends DrawableWrapper {
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Theme theme) { }
public void setScale(float scale) {
- mScale = scale * LEGACY_ICON_SCALE;
+ float h = getIntrinsicHeight();
+ float w = getIntrinsicWidth();
+ mScaleX = scale * LEGACY_ICON_SCALE;
+ mScaleY = scale * LEGACY_ICON_SCALE;
+ if (h > w && w > 0) {
+ mScaleX *= w / h;
+ } else if (w > h && h > 0) {
+ mScaleY *= h / w;
+ }
}
}
diff --git a/src/com/android/launcher3/graphics/LauncherIcons.java b/src/com/android/launcher3/graphics/LauncherIcons.java
index e671a82e9..746a639ff 100644
--- a/src/com/android/launcher3/graphics/LauncherIcons.java
+++ b/src/com/android/launcher3/graphics/LauncherIcons.java
@@ -252,7 +252,6 @@ public class LauncherIcons {
width = (int) (height * ratio);
}
}
-
// no intrinsic size --> use default size
int textureWidth = iconBitmapSize;
int textureHeight = iconBitmapSize;
@@ -266,7 +265,13 @@ public class LauncherIcons {
final int top = (textureHeight-height) / 2;
sOldBounds.set(icon.getBounds());
- icon.setBounds(left, top, left+width, top+height);
+ if (icon instanceof AdaptiveIconDrawable) {
+ int offset = Math.min(left, top);
+ int size = Math.max(width, height);
+ icon.setBounds(offset, offset, offset + size, offset + size);
+ } else {
+ icon.setBounds(left, top, left+width, top+height);
+ }
canvas.save(Canvas.MATRIX_SAVE_FLAG);
canvas.scale(scale, scale, textureWidth / 2, textureHeight / 2);
icon.draw(canvas);
@@ -289,16 +294,13 @@ public class LauncherIcons {
}
try {
- Class clazz = Class.forName("android.graphics.drawable.AdaptiveIconDrawable");
- if (!clazz.isAssignableFrom(drawable.getClass())) {
- Drawable iconWrapper =
+ if (!(drawable instanceof AdaptiveIconDrawable)) {
+ AdaptiveIconDrawable iconWrapper = (AdaptiveIconDrawable)
context.getDrawable(R.drawable.adaptive_icon_drawable_wrapper).mutate();
- FixedScaleDrawable fsd = ((FixedScaleDrawable) clazz.getMethod("getForeground")
- .invoke(iconWrapper));
+ FixedScaleDrawable fsd = ((FixedScaleDrawable) iconWrapper.getForeground());
fsd.setDrawable(drawable);
fsd.setScale(scale);
-
- return iconWrapper;
+ return (Drawable) iconWrapper;
}
} catch (Exception e) {
return drawable;