54 lines
1.6 KiB
Java
54 lines
1.6 KiB
Java
package com.android.uiuios.icons;
|
|
|
|
import android.content.res.Resources;
|
|
import android.content.res.Resources.Theme;
|
|
import android.graphics.Canvas;
|
|
import android.graphics.drawable.ColorDrawable;
|
|
import android.graphics.drawable.DrawableWrapper;
|
|
import android.util.AttributeSet;
|
|
|
|
import org.xmlpull.v1.XmlPullParser;
|
|
|
|
/**
|
|
* Extension of {@link DrawableWrapper} which scales the child drawables by a fixed amount.
|
|
*/
|
|
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 mScaleX, mScaleY;
|
|
|
|
public FixedScaleDrawable() {
|
|
super(new ColorDrawable());
|
|
mScaleX = LEGACY_ICON_SCALE;
|
|
mScaleY = LEGACY_ICON_SCALE;
|
|
}
|
|
|
|
@Override
|
|
public void draw(Canvas canvas) {
|
|
int saveCount = canvas.save();
|
|
canvas.scale(mScaleX, mScaleY,
|
|
getBounds().exactCenterX(), getBounds().exactCenterY());
|
|
super.draw(canvas);
|
|
canvas.restoreToCount(saveCount);
|
|
}
|
|
|
|
@Override
|
|
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs) { }
|
|
|
|
@Override
|
|
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Theme theme) { }
|
|
|
|
public void setScale(float 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;
|
|
}
|
|
}
|
|
}
|