Loading api/current.txt +2 −13 Original line number Diff line number Diff line Loading @@ -10338,7 +10338,6 @@ package android.graphics.drawable { ctor public BitmapDrawable(android.content.res.Resources, java.lang.String); ctor public deprecated BitmapDrawable(java.io.InputStream); ctor public BitmapDrawable(android.content.res.Resources, java.io.InputStream); method public void draw(android.graphics.Canvas); method public final android.graphics.Bitmap getBitmap(); method public final android.graphics.drawable.Drawable.ConstantState getConstantState(); method public int getGravity(); Loading @@ -10364,7 +10363,6 @@ package android.graphics.drawable { public class ClipDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback { ctor public ClipDrawable(android.graphics.drawable.Drawable, int, int); method public void draw(android.graphics.Canvas); method public int getOpacity(); method public void invalidateDrawable(android.graphics.drawable.Drawable); method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long); Loading @@ -10378,7 +10376,6 @@ package android.graphics.drawable { public class ColorDrawable extends android.graphics.drawable.Drawable { ctor public ColorDrawable(); ctor public ColorDrawable(int); method public void draw(android.graphics.Canvas); method public int getColor(); method public int getOpacity(); method public void setAlpha(int); Loading @@ -10397,7 +10394,7 @@ package android.graphics.drawable { method public static android.graphics.drawable.Drawable createFromStream(java.io.InputStream, java.lang.String); method public static android.graphics.drawable.Drawable createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public static android.graphics.drawable.Drawable createFromXmlInner(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public abstract void draw(android.graphics.Canvas); method public void draw(android.graphics.Canvas); method public int getAlpha(); method public final android.graphics.Rect getBounds(); method public android.graphics.drawable.Drawable.Callback getCallback(); Loading @@ -10421,6 +10418,7 @@ package android.graphics.drawable { method public void jumpToCurrentState(); method public android.graphics.drawable.Drawable mutate(); method protected void onBoundsChange(android.graphics.Rect); method protected void onDraw(android.graphics.Canvas); method protected boolean onLevelChange(int); method protected boolean onStateChange(int[]); method public static int resolveOpacity(int, int); Loading Loading @@ -10456,7 +10454,6 @@ package android.graphics.drawable { public class DrawableContainer extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback { ctor public DrawableContainer(); method public void draw(android.graphics.Canvas); method public int getOpacity(); method public void invalidateDrawable(android.graphics.drawable.Drawable); method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long); Loading Loading @@ -10497,7 +10494,6 @@ package android.graphics.drawable { public class GradientDrawable extends android.graphics.drawable.Drawable { ctor public GradientDrawable(); ctor public GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation, int[]); method public void draw(android.graphics.Canvas); method public int getOpacity(); method public android.graphics.drawable.GradientDrawable.Orientation getOrientation(); method public boolean onStateChange(int[]); Loading Loading @@ -10544,7 +10540,6 @@ package android.graphics.drawable { public class InsetDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback { ctor public InsetDrawable(android.graphics.drawable.Drawable, int); ctor public InsetDrawable(android.graphics.drawable.Drawable, int, int, int, int); method public void draw(android.graphics.Canvas); method public android.graphics.drawable.Drawable getDrawable(); method public int getOpacity(); method public void invalidateDrawable(android.graphics.drawable.Drawable); Loading @@ -10556,7 +10551,6 @@ package android.graphics.drawable { public class LayerDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback { ctor public LayerDrawable(android.graphics.drawable.Drawable[]); method public void draw(android.graphics.Canvas); method public android.graphics.drawable.Drawable findDrawableByLayerId(int); method public android.graphics.drawable.Drawable getDrawable(int); method public int getId(int); Loading Loading @@ -10587,7 +10581,6 @@ package android.graphics.drawable { ctor public NinePatchDrawable(android.content.res.Resources, android.graphics.Bitmap, byte[], android.graphics.Rect, java.lang.String); ctor public deprecated NinePatchDrawable(android.graphics.NinePatch); ctor public NinePatchDrawable(android.content.res.Resources, android.graphics.NinePatch); method public void draw(android.graphics.Canvas); method public int getOpacity(); method public android.graphics.Paint getPaint(); method public void setAlpha(int); Loading @@ -10606,7 +10599,6 @@ package android.graphics.drawable { public class PictureDrawable extends android.graphics.drawable.Drawable { ctor public PictureDrawable(android.graphics.Picture); method public void draw(android.graphics.Canvas); method public int getOpacity(); method public android.graphics.Picture getPicture(); method public void setAlpha(int); Loading @@ -10620,7 +10612,6 @@ package android.graphics.drawable { public class RotateDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback { ctor public RotateDrawable(); method public void draw(android.graphics.Canvas); method public android.graphics.drawable.Drawable getDrawable(); method public int getOpacity(); method public void invalidateDrawable(android.graphics.drawable.Drawable); Loading @@ -10632,7 +10623,6 @@ package android.graphics.drawable { public class ScaleDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback { ctor public ScaleDrawable(android.graphics.drawable.Drawable, int, float, float); method public void draw(android.graphics.Canvas); method public android.graphics.drawable.Drawable getDrawable(); method public int getOpacity(); method public void invalidateDrawable(android.graphics.drawable.Drawable); Loading @@ -10645,7 +10635,6 @@ package android.graphics.drawable { public class ShapeDrawable extends android.graphics.drawable.Drawable { ctor public ShapeDrawable(); ctor public ShapeDrawable(android.graphics.drawable.shapes.Shape); method public void draw(android.graphics.Canvas); method public int getOpacity(); method public android.graphics.Paint getPaint(); method public android.graphics.drawable.ShapeDrawable.ShaderFactory getShaderFactory(); graphics/java/android/graphics/drawable/BitmapDrawable.java +1 −1 Original line number Diff line number Diff line Loading @@ -456,7 +456,7 @@ public class BitmapDrawable extends Drawable { } @Override public void draw(Canvas canvas) { protected void onDraw(Canvas canvas) { Bitmap bitmap = mBitmap; if (bitmap != null) { final BitmapState state = mBitmapState; Loading graphics/java/android/graphics/drawable/Drawable.java +90 −4 Original line number Diff line number Diff line Loading @@ -39,6 +39,9 @@ import android.util.DisplayMetrics; import android.util.StateSet; import android.util.TypedValue; import android.util.Xml; import android.view.DisplayList; import android.view.HardwareCanvas; import android.view.HardwareRenderer; import android.view.View; import java.io.IOException; Loading Loading @@ -139,16 +142,96 @@ public abstract class Drawable { private Rect mBounds = ZERO_BOUNDS_RECT; // lazily becomes a new Rect() private WeakReference<Callback> mCallback = null; private boolean mVisible = true; private DisplayList mDisplayList; private int mLayoutDirection; /** * Draw in its bounds (set via setBounds) respecting optional effects such * as alpha (set via setAlpha) and color filter (set via setColorFilter). * <p> * Overriding this method will prevent caching optimizations. To enable * optimizations, override {@link #onDraw} instead. * * @param canvas The canvas to draw into */ public abstract void draw(Canvas canvas); public void draw(Canvas canvas) { if (canvas != null && canvas.isHardwareAccelerated()) { final HardwareCanvas hardwareCanvas = (HardwareCanvas) canvas; final DisplayList displayList = getDisplayList(hardwareCanvas); if (displayList != null) { final int restoreCount = hardwareCanvas.save(Canvas.MATRIX_SAVE_FLAG); hardwareCanvas.translate(mBounds.left, mBounds.top); hardwareCanvas.drawDisplayList(displayList); hardwareCanvas.restoreToCount(restoreCount); return; } } onDraw(canvas); } /** * Draw in its bounds (set via setBounds) respecting optional effects such * as alpha (set via setAlpha) and color filter (set via setColorFilter). * <p> * Overriding this method, rather than {@link #draw}, enables caching * optimizations that avoid re-drawing when unnecessary. * * @param canvas The canvas to draw into */ protected void onDraw(Canvas canvas) { throw new UnsupportedOperationException( "Drawable subclasses must implement either draw or onDraw"); } /** * Gets a display list that can be used to draw this drawable again without * invoking its draw method. * * @param hardwareCanvas The hardware canvas. * @return A DisplayList ready to replay, or null if caching is not enabled. * @hide */ private DisplayList getDisplayList(HardwareCanvas hardwareCanvas) { DisplayList displayList = mDisplayList; if (displayList != null && displayList.isValid()) { // Note: This code assumes that the display list previously generated // is compatible with the given hardware canvas. That might not be true // if we start using multiple different types of hardware canvas // in the system someday. return displayList; } displayList = DisplayList.create(getClass().getName()); mDisplayList = displayList; final Rect bounds = mBounds; final int width = bounds.width(); final int height = bounds.height(); final HardwareCanvas canvas = displayList.start(width, height); canvas.onPreDraw(null); // Draw the display list with origin (0,0) so that if the position // changes then we can translate without recreating the display list. final int restoreCount = canvas.save(); try { canvas.translate(-bounds.left, -bounds.top); onDraw(canvas); } finally { canvas.restoreToCount(restoreCount); canvas.onPostDraw(); displayList.end(); } displayList.setLeftTopRightBottom(0, 0, width, height); displayList.setClipToBounds(false); return displayList; } private void invalidateDisplayList() { mDisplayList = null; } /** * Specify a bounding rectangle for the Drawable. This is where the drawable Loading @@ -163,10 +246,11 @@ public abstract class Drawable { if (oldBounds.left != left || oldBounds.top != top || oldBounds.right != right || oldBounds.bottom != bottom) { if (!oldBounds.isEmpty()) { // first invalidate the previous bounds invalidateSelf(); if (oldBounds.right - oldBounds.left != right - left || oldBounds.bottom - oldBounds.top != bottom - top) { invalidateDisplayList(); } mBounds.set(left, top, right, bottom); onBoundsChange(mBounds); } Loading Loading @@ -354,6 +438,8 @@ public abstract class Drawable { * @see #setCallback(android.graphics.drawable.Drawable.Callback) */ public void invalidateSelf() { invalidateDisplayList(); final Callback callback = getCallback(); if (callback != null) { callback.invalidateDrawable(this); Loading graphics/java/android/graphics/drawable/GradientDrawable.java +1 −1 Original line number Diff line number Diff line Loading @@ -472,7 +472,7 @@ public class GradientDrawable extends Drawable { } @Override public void draw(Canvas canvas) { protected void onDraw(Canvas canvas) { if (!ensureValidRect()) { // nothing to draw return; Loading graphics/java/android/graphics/drawable/NinePatchDrawable.java +1 −1 Original line number Diff line number Diff line Loading @@ -223,7 +223,7 @@ public class NinePatchDrawable extends Drawable { } @Override public void draw(Canvas canvas) { protected void onDraw(Canvas canvas) { final Rect bounds = getBounds(); final boolean needsMirroring = needsMirroring(); if (needsMirroring) { Loading Loading
api/current.txt +2 −13 Original line number Diff line number Diff line Loading @@ -10338,7 +10338,6 @@ package android.graphics.drawable { ctor public BitmapDrawable(android.content.res.Resources, java.lang.String); ctor public deprecated BitmapDrawable(java.io.InputStream); ctor public BitmapDrawable(android.content.res.Resources, java.io.InputStream); method public void draw(android.graphics.Canvas); method public final android.graphics.Bitmap getBitmap(); method public final android.graphics.drawable.Drawable.ConstantState getConstantState(); method public int getGravity(); Loading @@ -10364,7 +10363,6 @@ package android.graphics.drawable { public class ClipDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback { ctor public ClipDrawable(android.graphics.drawable.Drawable, int, int); method public void draw(android.graphics.Canvas); method public int getOpacity(); method public void invalidateDrawable(android.graphics.drawable.Drawable); method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long); Loading @@ -10378,7 +10376,6 @@ package android.graphics.drawable { public class ColorDrawable extends android.graphics.drawable.Drawable { ctor public ColorDrawable(); ctor public ColorDrawable(int); method public void draw(android.graphics.Canvas); method public int getColor(); method public int getOpacity(); method public void setAlpha(int); Loading @@ -10397,7 +10394,7 @@ package android.graphics.drawable { method public static android.graphics.drawable.Drawable createFromStream(java.io.InputStream, java.lang.String); method public static android.graphics.drawable.Drawable createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public static android.graphics.drawable.Drawable createFromXmlInner(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public abstract void draw(android.graphics.Canvas); method public void draw(android.graphics.Canvas); method public int getAlpha(); method public final android.graphics.Rect getBounds(); method public android.graphics.drawable.Drawable.Callback getCallback(); Loading @@ -10421,6 +10418,7 @@ package android.graphics.drawable { method public void jumpToCurrentState(); method public android.graphics.drawable.Drawable mutate(); method protected void onBoundsChange(android.graphics.Rect); method protected void onDraw(android.graphics.Canvas); method protected boolean onLevelChange(int); method protected boolean onStateChange(int[]); method public static int resolveOpacity(int, int); Loading Loading @@ -10456,7 +10454,6 @@ package android.graphics.drawable { public class DrawableContainer extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback { ctor public DrawableContainer(); method public void draw(android.graphics.Canvas); method public int getOpacity(); method public void invalidateDrawable(android.graphics.drawable.Drawable); method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long); Loading Loading @@ -10497,7 +10494,6 @@ package android.graphics.drawable { public class GradientDrawable extends android.graphics.drawable.Drawable { ctor public GradientDrawable(); ctor public GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation, int[]); method public void draw(android.graphics.Canvas); method public int getOpacity(); method public android.graphics.drawable.GradientDrawable.Orientation getOrientation(); method public boolean onStateChange(int[]); Loading Loading @@ -10544,7 +10540,6 @@ package android.graphics.drawable { public class InsetDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback { ctor public InsetDrawable(android.graphics.drawable.Drawable, int); ctor public InsetDrawable(android.graphics.drawable.Drawable, int, int, int, int); method public void draw(android.graphics.Canvas); method public android.graphics.drawable.Drawable getDrawable(); method public int getOpacity(); method public void invalidateDrawable(android.graphics.drawable.Drawable); Loading @@ -10556,7 +10551,6 @@ package android.graphics.drawable { public class LayerDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback { ctor public LayerDrawable(android.graphics.drawable.Drawable[]); method public void draw(android.graphics.Canvas); method public android.graphics.drawable.Drawable findDrawableByLayerId(int); method public android.graphics.drawable.Drawable getDrawable(int); method public int getId(int); Loading Loading @@ -10587,7 +10581,6 @@ package android.graphics.drawable { ctor public NinePatchDrawable(android.content.res.Resources, android.graphics.Bitmap, byte[], android.graphics.Rect, java.lang.String); ctor public deprecated NinePatchDrawable(android.graphics.NinePatch); ctor public NinePatchDrawable(android.content.res.Resources, android.graphics.NinePatch); method public void draw(android.graphics.Canvas); method public int getOpacity(); method public android.graphics.Paint getPaint(); method public void setAlpha(int); Loading @@ -10606,7 +10599,6 @@ package android.graphics.drawable { public class PictureDrawable extends android.graphics.drawable.Drawable { ctor public PictureDrawable(android.graphics.Picture); method public void draw(android.graphics.Canvas); method public int getOpacity(); method public android.graphics.Picture getPicture(); method public void setAlpha(int); Loading @@ -10620,7 +10612,6 @@ package android.graphics.drawable { public class RotateDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback { ctor public RotateDrawable(); method public void draw(android.graphics.Canvas); method public android.graphics.drawable.Drawable getDrawable(); method public int getOpacity(); method public void invalidateDrawable(android.graphics.drawable.Drawable); Loading @@ -10632,7 +10623,6 @@ package android.graphics.drawable { public class ScaleDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable.Callback { ctor public ScaleDrawable(android.graphics.drawable.Drawable, int, float, float); method public void draw(android.graphics.Canvas); method public android.graphics.drawable.Drawable getDrawable(); method public int getOpacity(); method public void invalidateDrawable(android.graphics.drawable.Drawable); Loading @@ -10645,7 +10635,6 @@ package android.graphics.drawable { public class ShapeDrawable extends android.graphics.drawable.Drawable { ctor public ShapeDrawable(); ctor public ShapeDrawable(android.graphics.drawable.shapes.Shape); method public void draw(android.graphics.Canvas); method public int getOpacity(); method public android.graphics.Paint getPaint(); method public android.graphics.drawable.ShapeDrawable.ShaderFactory getShaderFactory();
graphics/java/android/graphics/drawable/BitmapDrawable.java +1 −1 Original line number Diff line number Diff line Loading @@ -456,7 +456,7 @@ public class BitmapDrawable extends Drawable { } @Override public void draw(Canvas canvas) { protected void onDraw(Canvas canvas) { Bitmap bitmap = mBitmap; if (bitmap != null) { final BitmapState state = mBitmapState; Loading
graphics/java/android/graphics/drawable/Drawable.java +90 −4 Original line number Diff line number Diff line Loading @@ -39,6 +39,9 @@ import android.util.DisplayMetrics; import android.util.StateSet; import android.util.TypedValue; import android.util.Xml; import android.view.DisplayList; import android.view.HardwareCanvas; import android.view.HardwareRenderer; import android.view.View; import java.io.IOException; Loading Loading @@ -139,16 +142,96 @@ public abstract class Drawable { private Rect mBounds = ZERO_BOUNDS_RECT; // lazily becomes a new Rect() private WeakReference<Callback> mCallback = null; private boolean mVisible = true; private DisplayList mDisplayList; private int mLayoutDirection; /** * Draw in its bounds (set via setBounds) respecting optional effects such * as alpha (set via setAlpha) and color filter (set via setColorFilter). * <p> * Overriding this method will prevent caching optimizations. To enable * optimizations, override {@link #onDraw} instead. * * @param canvas The canvas to draw into */ public abstract void draw(Canvas canvas); public void draw(Canvas canvas) { if (canvas != null && canvas.isHardwareAccelerated()) { final HardwareCanvas hardwareCanvas = (HardwareCanvas) canvas; final DisplayList displayList = getDisplayList(hardwareCanvas); if (displayList != null) { final int restoreCount = hardwareCanvas.save(Canvas.MATRIX_SAVE_FLAG); hardwareCanvas.translate(mBounds.left, mBounds.top); hardwareCanvas.drawDisplayList(displayList); hardwareCanvas.restoreToCount(restoreCount); return; } } onDraw(canvas); } /** * Draw in its bounds (set via setBounds) respecting optional effects such * as alpha (set via setAlpha) and color filter (set via setColorFilter). * <p> * Overriding this method, rather than {@link #draw}, enables caching * optimizations that avoid re-drawing when unnecessary. * * @param canvas The canvas to draw into */ protected void onDraw(Canvas canvas) { throw new UnsupportedOperationException( "Drawable subclasses must implement either draw or onDraw"); } /** * Gets a display list that can be used to draw this drawable again without * invoking its draw method. * * @param hardwareCanvas The hardware canvas. * @return A DisplayList ready to replay, or null if caching is not enabled. * @hide */ private DisplayList getDisplayList(HardwareCanvas hardwareCanvas) { DisplayList displayList = mDisplayList; if (displayList != null && displayList.isValid()) { // Note: This code assumes that the display list previously generated // is compatible with the given hardware canvas. That might not be true // if we start using multiple different types of hardware canvas // in the system someday. return displayList; } displayList = DisplayList.create(getClass().getName()); mDisplayList = displayList; final Rect bounds = mBounds; final int width = bounds.width(); final int height = bounds.height(); final HardwareCanvas canvas = displayList.start(width, height); canvas.onPreDraw(null); // Draw the display list with origin (0,0) so that if the position // changes then we can translate without recreating the display list. final int restoreCount = canvas.save(); try { canvas.translate(-bounds.left, -bounds.top); onDraw(canvas); } finally { canvas.restoreToCount(restoreCount); canvas.onPostDraw(); displayList.end(); } displayList.setLeftTopRightBottom(0, 0, width, height); displayList.setClipToBounds(false); return displayList; } private void invalidateDisplayList() { mDisplayList = null; } /** * Specify a bounding rectangle for the Drawable. This is where the drawable Loading @@ -163,10 +246,11 @@ public abstract class Drawable { if (oldBounds.left != left || oldBounds.top != top || oldBounds.right != right || oldBounds.bottom != bottom) { if (!oldBounds.isEmpty()) { // first invalidate the previous bounds invalidateSelf(); if (oldBounds.right - oldBounds.left != right - left || oldBounds.bottom - oldBounds.top != bottom - top) { invalidateDisplayList(); } mBounds.set(left, top, right, bottom); onBoundsChange(mBounds); } Loading Loading @@ -354,6 +438,8 @@ public abstract class Drawable { * @see #setCallback(android.graphics.drawable.Drawable.Callback) */ public void invalidateSelf() { invalidateDisplayList(); final Callback callback = getCallback(); if (callback != null) { callback.invalidateDrawable(this); Loading
graphics/java/android/graphics/drawable/GradientDrawable.java +1 −1 Original line number Diff line number Diff line Loading @@ -472,7 +472,7 @@ public class GradientDrawable extends Drawable { } @Override public void draw(Canvas canvas) { protected void onDraw(Canvas canvas) { if (!ensureValidRect()) { // nothing to draw return; Loading
graphics/java/android/graphics/drawable/NinePatchDrawable.java +1 −1 Original line number Diff line number Diff line Loading @@ -223,7 +223,7 @@ public class NinePatchDrawable extends Drawable { } @Override public void draw(Canvas canvas) { protected void onDraw(Canvas canvas) { final Rect bounds = getBounds(); final boolean needsMirroring = needsMirroring(); if (needsMirroring) { Loading