Loading api/current.txt +0 −5 Original line number Diff line number Diff line Loading @@ -12303,7 +12303,6 @@ package android.graphics.drawable { method public int getIntrinsicWidth(); method public int getLayoutDirection(); method public final int getLevel(); method public final float getLevelFloat(); method public int getMinimumHeight(); method public int getMinimumWidth(); method public abstract int getOpacity(); Loading @@ -12323,7 +12322,6 @@ package android.graphics.drawable { method protected void onBoundsChange(android.graphics.Rect); method public boolean onLayoutDirectionChanged(int); method protected boolean onLevelChange(int); method protected boolean onLevelChange(float); method protected boolean onStateChange(int[]); method public static int resolveOpacity(int, int); method public void scheduleSelf(java.lang.Runnable, long); Loading @@ -12341,15 +12339,12 @@ package android.graphics.drawable { method public void setHotspotBounds(int, int, int, int); method public final boolean setLayoutDirection(int); method public final boolean setLevel(int); method public final boolean setLevel(float); method public boolean setState(int[]); method public void setTint(int); method public void setTintList(android.content.res.ColorStateList); method public void setTintMode(android.graphics.PorterDuff.Mode); method public boolean setVisible(boolean, boolean); method public void unscheduleSelf(java.lang.Runnable); field public static final int MAX_LEVEL = 10000; // 0x2710 field public static final float MAX_LEVEL_FLOAT = 10000.0f; } public static abstract interface Drawable.Callback { api/system-current.txt +0 −5 Original line number Diff line number Diff line Loading @@ -12640,7 +12640,6 @@ package android.graphics.drawable { method public int getIntrinsicWidth(); method public int getLayoutDirection(); method public final int getLevel(); method public final float getLevelFloat(); method public int getMinimumHeight(); method public int getMinimumWidth(); method public abstract int getOpacity(); Loading @@ -12660,7 +12659,6 @@ package android.graphics.drawable { method protected void onBoundsChange(android.graphics.Rect); method public boolean onLayoutDirectionChanged(int); method protected boolean onLevelChange(int); method protected boolean onLevelChange(float); method protected boolean onStateChange(int[]); method public static int resolveOpacity(int, int); method public void scheduleSelf(java.lang.Runnable, long); Loading @@ -12678,15 +12676,12 @@ package android.graphics.drawable { method public void setHotspotBounds(int, int, int, int); method public final boolean setLayoutDirection(int); method public final boolean setLevel(int); method public final boolean setLevel(float); method public boolean setState(int[]); method public void setTint(int); method public void setTintList(android.content.res.ColorStateList); method public void setTintMode(android.graphics.PorterDuff.Mode); method public boolean setVisible(boolean, boolean); method public void unscheduleSelf(java.lang.Runnable); field public static final int MAX_LEVEL = 10000; // 0x2710 field public static final float MAX_LEVEL_FLOAT = 10000.0f; } public static abstract interface Drawable.Callback { graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java +1 −1 Original line number Diff line number Diff line Loading @@ -217,7 +217,7 @@ public class AnimatedVectorDrawable extends Drawable implements Animatable2 { } @Override protected boolean onLevelChange(float level) { protected boolean onLevelChange(int level) { return mAnimatedVectorState.mVectorDrawable.setLevel(level); } Loading graphics/java/android/graphics/drawable/ClipDrawable.java +12 −10 Original line number Diff line number Diff line Loading @@ -52,6 +52,8 @@ public class ClipDrawable extends DrawableWrapper { public static final int HORIZONTAL = 1; public static final int VERTICAL = 2; private static final int MAX_LEVEL = 10000; private final Rect mTmpRect = new Rect(); private ClipState mState; Loading Loading @@ -141,7 +143,7 @@ public class ClipDrawable extends DrawableWrapper { } @Override protected boolean onLevelChange(float level) { protected boolean onLevelChange(int level) { super.onLevelChange(level); invalidateSelf(); return true; Loading @@ -151,12 +153,12 @@ public class ClipDrawable extends DrawableWrapper { public int getOpacity() { final Drawable dr = getDrawable(); final int opacity = dr.getOpacity(); if (opacity == PixelFormat.TRANSPARENT || dr.getLevelFloat() == 0) { if (opacity == PixelFormat.TRANSPARENT || dr.getLevel() == 0) { return PixelFormat.TRANSPARENT; } final float level = getLevelFloat(); if (level >= MAX_LEVEL_FLOAT) { final int level = getLevel(); if (level >= MAX_LEVEL) { return dr.getOpacity(); } Loading @@ -167,24 +169,24 @@ public class ClipDrawable extends DrawableWrapper { @Override public void draw(Canvas canvas) { final Drawable dr = getDrawable(); if (dr.getLevelFloat() == 0) { if (dr.getLevel() == 0) { return; } final Rect r = mTmpRect; final Rect bounds = getBounds(); final float level = getLevelFloat(); final int level = getLevel(); int w = bounds.width(); final int iw = 0; final int iw = 0; //mState.mDrawable.getIntrinsicWidth(); if ((mState.mOrientation & HORIZONTAL) != 0) { w -= Math.round((w - iw) * (MAX_LEVEL_FLOAT - level) / MAX_LEVEL_FLOAT); w -= (w - iw) * (MAX_LEVEL - level) / MAX_LEVEL; } int h = bounds.height(); final int ih = 0; final int ih = 0; //mState.mDrawable.getIntrinsicHeight(); if ((mState.mOrientation & VERTICAL) != 0) { h -= Math.round((h - ih) * (MAX_LEVEL_FLOAT - level) / MAX_LEVEL_FLOAT); h -= (h - ih) * (MAX_LEVEL - level) / MAX_LEVEL; } final int layoutDirection = getLayoutDirection(); Loading graphics/java/android/graphics/drawable/Drawable.java +23 −124 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ import android.graphics.Xfermode; import android.os.Trace; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.FloatProperty; import android.util.StateSet; import android.util.TypedValue; import android.util.Xml; Loading Loading @@ -127,19 +126,12 @@ import java.util.Collection; * document.</p></div> */ public abstract class Drawable { private static final Rect ZERO_BOUNDS_RECT = new Rect(); static final PorterDuff.Mode DEFAULT_TINT_MODE = PorterDuff.Mode.SRC_IN; /** The standard maximum value for calls to {@link #setLevel(int)}. */ public static final int MAX_LEVEL = 10000; /** The standard maximum value for calls to {@link #setLevel(float)}. */ public static final float MAX_LEVEL_FLOAT = 10000.0f; private int[] mStateSet = StateSet.WILD_CARD; private float mLevel = 0.0f; private int mLevel = 0; private int mChangingConfigurations = 0; private Rect mBounds = ZERO_BOUNDS_RECT; // lazily becomes a new Rect() private WeakReference<Callback> mCallback = null; Loading Loading @@ -719,63 +711,22 @@ public abstract class Drawable { } /** * Sets the level for the drawable as an integer value where typically the * minimum level is 0 and the maximum is 10000 {@link #MAX_LEVEL}; however, * the range may vary based on the Drawable implementation and is not * clamped. * <p> * This allows a drawable to vary its imagery based on a continuous * controller. For example, it may be used to show progress or volume * level. * <p> * Use #setLevelFloat(float) to set the level as a high-precision * floating-point value. * Specify the level for the drawable. This allows a drawable to vary its * imagery based on a continuous controller, for example to show progress * or volume level. * * @param level the new level, typically between 0 and 10000 * @return {@code true} if this change in level has caused the appearance * of the drawable to change and will require a subsequent call to * invalidate, {@code false} otherwise * @see #getLevel() * @see #setLevel(float) * @see #onLevelChange(int) */ public final boolean setLevel(int level) { return setLevel((float) level); } /** * Returns the current level as a rounded integer value. * <p> * Use #getLevelFloat() to return the level as a high-precision * floating-point value. * <p>If the new level you are supplying causes the appearance of the * Drawable to change, then it is responsible for calling * {@link #invalidateSelf} in order to have itself redrawn, <em>and</em> * true will be returned from this function. * * @param level The new level, from 0 (minimum) to 10000 (maximum). * * @return the current level, typically between 0 and 10000 * @see #setLevel(int) * @see #getLevelFloat() * @return Returns true if this change in level has caused the appearance * of the Drawable to change (hence requiring an invalidate), otherwise * returns false. */ public final int getLevel() { return Math.round(mLevel); } /** * Sets the level for the drawable as a floating-point value where * typically the minimum level is 0.0 and the maximum is 10000.0 * {@link #MAX_LEVEL_FLOAT}; however, the range may vary based on the * Drawable implementation and is not clamped. * <p> * This allows a drawable to vary its imagery based on a continuous * controller. For example, it may be used to show progress or volume * level. * * @param level the new level, typically between 0.0 and 10000.0 * ({@link #MAX_LEVEL_FLOAT}) * @return {@code true} if this change in level has caused the appearance * of the drawable to change and will require a subsequent call to * invalidate, {@code false} otherwise * @see #getLevelFloat() * @see #onLevelChange(float) */ public final boolean setLevel(float level) { public final boolean setLevel(int level) { if (mLevel != level) { mLevel = level; return onLevelChange(level); Loading @@ -784,13 +735,11 @@ public abstract class Drawable { } /** * Returns the current level as a floating-point value. * Retrieve the current level. * * @return the current level, typically between 0.0 and 10000.0 * ({@link #MAX_LEVEL_FLOAT}) * @see #setLevel(float) * @return int Current level, from 0 (minimum) to 10000 (maximum). */ public final float getLevelFloat() { public final int getLevel() { return mLevel; } Loading Loading @@ -945,47 +894,14 @@ public abstract class Drawable { * last state. */ protected boolean onStateChange(int[] state) { return false; } /** * Called when the drawable level changes. * <p> * Override this in your subclass to change appearance if you vary based on * level and do not need floating-point accuracy. To handle changes with * higher accuracy, override {@link #onLevelChange(float)} instead. * <p> * <strong>Note:</strong> Do not override both this method and * {@link #onLevelChange(float)}. Only override one method. * * @param level the level as an integer value, typically between 0 * (minimum) and 10000 ({@link #MAX_LEVEL}) * @return {@code true} if the level change has caused the appearance of * the drawable to change such that it needs to be redrawn, or * {@code false} if there is no need to redraw /** Override this in your subclass to change appearance if you vary based * on level. * @return Returns true if the level change has caused the appearance of * the Drawable to change (that is, it needs to be drawn), else false * if it looks the same and there is no need to redraw it since its * last level. */ protected boolean onLevelChange(int level) { return false; } /** * Called when the drawable level changes. * <p> * Override this in your subclass to change appearance if you vary based on * level and need floating-point accuracy. * <p> * <strong>Note:</strong> Do not override both this method and * {@link #onLevelChange(int)}. Only override one method. If your app * targets SDK <= 23 ({@link android.os.Build.VERSION_CODES#M M}), you * will need to override {@link #onLevelChange(int)} to receive callbacks * on devices running Android M and below. * * @param level the level as a floating-point value, typically between 0.0 * and 10000.0 ({@link #MAX_LEVEL_FLOAT}) * @return {@code true} if the level change has caused the appearance of * the drawable to change such that it needs to be redrawn, or * {@code false} if there is no need to redraw */ protected boolean onLevelChange(float level) { return onLevelChange(Math.round(level)); } /** * Override this in your subclass to change appearance if you vary based on * the bounds. Loading Loading @@ -1411,23 +1327,6 @@ public abstract class Drawable { return tintFilter; } /** * Animatable property for Drawable level. * * @hide Until Drawable animations have been cleaned up. */ public static final FloatProperty<Drawable> LEVEL = new FloatProperty<Drawable>("levelFloat") { @Override public Float get(Drawable object) { return object.getLevelFloat(); } @Override public void setValue(Drawable object, float value) { object.setLevel(value); } }; /** * Obtains styled attributes from the theme, if available, or unstyled * resources if the theme is null. Loading Loading
api/current.txt +0 −5 Original line number Diff line number Diff line Loading @@ -12303,7 +12303,6 @@ package android.graphics.drawable { method public int getIntrinsicWidth(); method public int getLayoutDirection(); method public final int getLevel(); method public final float getLevelFloat(); method public int getMinimumHeight(); method public int getMinimumWidth(); method public abstract int getOpacity(); Loading @@ -12323,7 +12322,6 @@ package android.graphics.drawable { method protected void onBoundsChange(android.graphics.Rect); method public boolean onLayoutDirectionChanged(int); method protected boolean onLevelChange(int); method protected boolean onLevelChange(float); method protected boolean onStateChange(int[]); method public static int resolveOpacity(int, int); method public void scheduleSelf(java.lang.Runnable, long); Loading @@ -12341,15 +12339,12 @@ package android.graphics.drawable { method public void setHotspotBounds(int, int, int, int); method public final boolean setLayoutDirection(int); method public final boolean setLevel(int); method public final boolean setLevel(float); method public boolean setState(int[]); method public void setTint(int); method public void setTintList(android.content.res.ColorStateList); method public void setTintMode(android.graphics.PorterDuff.Mode); method public boolean setVisible(boolean, boolean); method public void unscheduleSelf(java.lang.Runnable); field public static final int MAX_LEVEL = 10000; // 0x2710 field public static final float MAX_LEVEL_FLOAT = 10000.0f; } public static abstract interface Drawable.Callback {
api/system-current.txt +0 −5 Original line number Diff line number Diff line Loading @@ -12640,7 +12640,6 @@ package android.graphics.drawable { method public int getIntrinsicWidth(); method public int getLayoutDirection(); method public final int getLevel(); method public final float getLevelFloat(); method public int getMinimumHeight(); method public int getMinimumWidth(); method public abstract int getOpacity(); Loading @@ -12660,7 +12659,6 @@ package android.graphics.drawable { method protected void onBoundsChange(android.graphics.Rect); method public boolean onLayoutDirectionChanged(int); method protected boolean onLevelChange(int); method protected boolean onLevelChange(float); method protected boolean onStateChange(int[]); method public static int resolveOpacity(int, int); method public void scheduleSelf(java.lang.Runnable, long); Loading @@ -12678,15 +12676,12 @@ package android.graphics.drawable { method public void setHotspotBounds(int, int, int, int); method public final boolean setLayoutDirection(int); method public final boolean setLevel(int); method public final boolean setLevel(float); method public boolean setState(int[]); method public void setTint(int); method public void setTintList(android.content.res.ColorStateList); method public void setTintMode(android.graphics.PorterDuff.Mode); method public boolean setVisible(boolean, boolean); method public void unscheduleSelf(java.lang.Runnable); field public static final int MAX_LEVEL = 10000; // 0x2710 field public static final float MAX_LEVEL_FLOAT = 10000.0f; } public static abstract interface Drawable.Callback {
graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java +1 −1 Original line number Diff line number Diff line Loading @@ -217,7 +217,7 @@ public class AnimatedVectorDrawable extends Drawable implements Animatable2 { } @Override protected boolean onLevelChange(float level) { protected boolean onLevelChange(int level) { return mAnimatedVectorState.mVectorDrawable.setLevel(level); } Loading
graphics/java/android/graphics/drawable/ClipDrawable.java +12 −10 Original line number Diff line number Diff line Loading @@ -52,6 +52,8 @@ public class ClipDrawable extends DrawableWrapper { public static final int HORIZONTAL = 1; public static final int VERTICAL = 2; private static final int MAX_LEVEL = 10000; private final Rect mTmpRect = new Rect(); private ClipState mState; Loading Loading @@ -141,7 +143,7 @@ public class ClipDrawable extends DrawableWrapper { } @Override protected boolean onLevelChange(float level) { protected boolean onLevelChange(int level) { super.onLevelChange(level); invalidateSelf(); return true; Loading @@ -151,12 +153,12 @@ public class ClipDrawable extends DrawableWrapper { public int getOpacity() { final Drawable dr = getDrawable(); final int opacity = dr.getOpacity(); if (opacity == PixelFormat.TRANSPARENT || dr.getLevelFloat() == 0) { if (opacity == PixelFormat.TRANSPARENT || dr.getLevel() == 0) { return PixelFormat.TRANSPARENT; } final float level = getLevelFloat(); if (level >= MAX_LEVEL_FLOAT) { final int level = getLevel(); if (level >= MAX_LEVEL) { return dr.getOpacity(); } Loading @@ -167,24 +169,24 @@ public class ClipDrawable extends DrawableWrapper { @Override public void draw(Canvas canvas) { final Drawable dr = getDrawable(); if (dr.getLevelFloat() == 0) { if (dr.getLevel() == 0) { return; } final Rect r = mTmpRect; final Rect bounds = getBounds(); final float level = getLevelFloat(); final int level = getLevel(); int w = bounds.width(); final int iw = 0; final int iw = 0; //mState.mDrawable.getIntrinsicWidth(); if ((mState.mOrientation & HORIZONTAL) != 0) { w -= Math.round((w - iw) * (MAX_LEVEL_FLOAT - level) / MAX_LEVEL_FLOAT); w -= (w - iw) * (MAX_LEVEL - level) / MAX_LEVEL; } int h = bounds.height(); final int ih = 0; final int ih = 0; //mState.mDrawable.getIntrinsicHeight(); if ((mState.mOrientation & VERTICAL) != 0) { h -= Math.round((h - ih) * (MAX_LEVEL_FLOAT - level) / MAX_LEVEL_FLOAT); h -= (h - ih) * (MAX_LEVEL - level) / MAX_LEVEL; } final int layoutDirection = getLayoutDirection(); Loading
graphics/java/android/graphics/drawable/Drawable.java +23 −124 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ import android.graphics.Xfermode; import android.os.Trace; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.FloatProperty; import android.util.StateSet; import android.util.TypedValue; import android.util.Xml; Loading Loading @@ -127,19 +126,12 @@ import java.util.Collection; * document.</p></div> */ public abstract class Drawable { private static final Rect ZERO_BOUNDS_RECT = new Rect(); static final PorterDuff.Mode DEFAULT_TINT_MODE = PorterDuff.Mode.SRC_IN; /** The standard maximum value for calls to {@link #setLevel(int)}. */ public static final int MAX_LEVEL = 10000; /** The standard maximum value for calls to {@link #setLevel(float)}. */ public static final float MAX_LEVEL_FLOAT = 10000.0f; private int[] mStateSet = StateSet.WILD_CARD; private float mLevel = 0.0f; private int mLevel = 0; private int mChangingConfigurations = 0; private Rect mBounds = ZERO_BOUNDS_RECT; // lazily becomes a new Rect() private WeakReference<Callback> mCallback = null; Loading Loading @@ -719,63 +711,22 @@ public abstract class Drawable { } /** * Sets the level for the drawable as an integer value where typically the * minimum level is 0 and the maximum is 10000 {@link #MAX_LEVEL}; however, * the range may vary based on the Drawable implementation and is not * clamped. * <p> * This allows a drawable to vary its imagery based on a continuous * controller. For example, it may be used to show progress or volume * level. * <p> * Use #setLevelFloat(float) to set the level as a high-precision * floating-point value. * Specify the level for the drawable. This allows a drawable to vary its * imagery based on a continuous controller, for example to show progress * or volume level. * * @param level the new level, typically between 0 and 10000 * @return {@code true} if this change in level has caused the appearance * of the drawable to change and will require a subsequent call to * invalidate, {@code false} otherwise * @see #getLevel() * @see #setLevel(float) * @see #onLevelChange(int) */ public final boolean setLevel(int level) { return setLevel((float) level); } /** * Returns the current level as a rounded integer value. * <p> * Use #getLevelFloat() to return the level as a high-precision * floating-point value. * <p>If the new level you are supplying causes the appearance of the * Drawable to change, then it is responsible for calling * {@link #invalidateSelf} in order to have itself redrawn, <em>and</em> * true will be returned from this function. * * @param level The new level, from 0 (minimum) to 10000 (maximum). * * @return the current level, typically between 0 and 10000 * @see #setLevel(int) * @see #getLevelFloat() * @return Returns true if this change in level has caused the appearance * of the Drawable to change (hence requiring an invalidate), otherwise * returns false. */ public final int getLevel() { return Math.round(mLevel); } /** * Sets the level for the drawable as a floating-point value where * typically the minimum level is 0.0 and the maximum is 10000.0 * {@link #MAX_LEVEL_FLOAT}; however, the range may vary based on the * Drawable implementation and is not clamped. * <p> * This allows a drawable to vary its imagery based on a continuous * controller. For example, it may be used to show progress or volume * level. * * @param level the new level, typically between 0.0 and 10000.0 * ({@link #MAX_LEVEL_FLOAT}) * @return {@code true} if this change in level has caused the appearance * of the drawable to change and will require a subsequent call to * invalidate, {@code false} otherwise * @see #getLevelFloat() * @see #onLevelChange(float) */ public final boolean setLevel(float level) { public final boolean setLevel(int level) { if (mLevel != level) { mLevel = level; return onLevelChange(level); Loading @@ -784,13 +735,11 @@ public abstract class Drawable { } /** * Returns the current level as a floating-point value. * Retrieve the current level. * * @return the current level, typically between 0.0 and 10000.0 * ({@link #MAX_LEVEL_FLOAT}) * @see #setLevel(float) * @return int Current level, from 0 (minimum) to 10000 (maximum). */ public final float getLevelFloat() { public final int getLevel() { return mLevel; } Loading Loading @@ -945,47 +894,14 @@ public abstract class Drawable { * last state. */ protected boolean onStateChange(int[] state) { return false; } /** * Called when the drawable level changes. * <p> * Override this in your subclass to change appearance if you vary based on * level and do not need floating-point accuracy. To handle changes with * higher accuracy, override {@link #onLevelChange(float)} instead. * <p> * <strong>Note:</strong> Do not override both this method and * {@link #onLevelChange(float)}. Only override one method. * * @param level the level as an integer value, typically between 0 * (minimum) and 10000 ({@link #MAX_LEVEL}) * @return {@code true} if the level change has caused the appearance of * the drawable to change such that it needs to be redrawn, or * {@code false} if there is no need to redraw /** Override this in your subclass to change appearance if you vary based * on level. * @return Returns true if the level change has caused the appearance of * the Drawable to change (that is, it needs to be drawn), else false * if it looks the same and there is no need to redraw it since its * last level. */ protected boolean onLevelChange(int level) { return false; } /** * Called when the drawable level changes. * <p> * Override this in your subclass to change appearance if you vary based on * level and need floating-point accuracy. * <p> * <strong>Note:</strong> Do not override both this method and * {@link #onLevelChange(int)}. Only override one method. If your app * targets SDK <= 23 ({@link android.os.Build.VERSION_CODES#M M}), you * will need to override {@link #onLevelChange(int)} to receive callbacks * on devices running Android M and below. * * @param level the level as a floating-point value, typically between 0.0 * and 10000.0 ({@link #MAX_LEVEL_FLOAT}) * @return {@code true} if the level change has caused the appearance of * the drawable to change such that it needs to be redrawn, or * {@code false} if there is no need to redraw */ protected boolean onLevelChange(float level) { return onLevelChange(Math.round(level)); } /** * Override this in your subclass to change appearance if you vary based on * the bounds. Loading Loading @@ -1411,23 +1327,6 @@ public abstract class Drawable { return tintFilter; } /** * Animatable property for Drawable level. * * @hide Until Drawable animations have been cleaned up. */ public static final FloatProperty<Drawable> LEVEL = new FloatProperty<Drawable>("levelFloat") { @Override public Float get(Drawable object) { return object.getLevelFloat(); } @Override public void setValue(Drawable object, float value) { object.setLevel(value); } }; /** * Obtains styled attributes from the theme, if available, or unstyled * resources if the theme is null. Loading