Loading core/java/android/view/ThreadedRenderer.java +6 −3 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.view.View.AttachInfo; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashSet; /** Loading Loading @@ -465,11 +466,13 @@ public class ThreadedRenderer extends HardwareRenderer { final LongSparseArray<Drawable.ConstantState> drawables = resources.getPreloadedDrawables(); final int count = drawables.size(); ArrayList<Bitmap> tmpList = new ArrayList<Bitmap>(); for (int i = 0; i < count; i++) { final Bitmap bitmap = drawables.valueAt(i).getBitmap(); if (bitmap != null && bitmap.getConfig() == Bitmap.Config.ARGB_8888) { preloadedPointers.add(bitmap.mNativeBitmap); drawables.valueAt(i).addAtlasableBitmaps(tmpList); for (int j = 0; j < tmpList.size(); j++) { preloadedPointers.add(tmpList.get(j).mNativeBitmap); } tmpList.clear(); } for (int i = 0; i < map.length; i += 4) { Loading graphics/java/android/graphics/drawable/BitmapDrawable.java +6 −2 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.util.Collection; /** * A Drawable that wraps a bitmap and can be tiled, stretched, or aligned. You can create a Loading Loading @@ -913,8 +914,11 @@ public class BitmapDrawable extends Drawable { } @Override public Bitmap getBitmap() { return mBitmap; public int addAtlasableBitmaps(Collection<Bitmap> atlasList) { if (isAtlasable(mBitmap) && atlasList.add(mBitmap)) { return mBitmap.getWidth() * mBitmap.getHeight(); } return 0; } @Override Loading graphics/java/android/graphics/drawable/Drawable.java +9 −2 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ import java.io.IOException; import java.io.InputStream; import java.lang.ref.WeakReference; import java.util.Arrays; import java.util.Collection; /** * A Drawable is a general abstraction for "something that can be drawn." Most Loading Loading @@ -1244,10 +1245,16 @@ public abstract class Drawable { public abstract int getChangingConfigurations(); /** * @return Total pixel count * @hide */ public Bitmap getBitmap() { return null; public int addAtlasableBitmaps(Collection<Bitmap> atlasList) { return 0; } /** @hide */ protected final boolean isAtlasable(Bitmap bitmap) { return bitmap != null && bitmap.getConfig() == Bitmap.Config.ARGB_8888; } /** Loading graphics/java/android/graphics/drawable/DrawableContainer.java +17 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.annotation.NonNull; import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.Resources.Theme; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Insets; Loading @@ -31,6 +32,8 @@ import android.os.SystemClock; import android.util.LayoutDirection; import android.util.SparseArray; import java.util.Collection; /** * A helper class that contains several {@link Drawable}s and selects which one to use. * Loading Loading @@ -1062,6 +1065,20 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { return true; } /** @hide */ @Override public int addAtlasableBitmaps(Collection<Bitmap> atlasList) { final int N = mNumChildren; int pixelCount = 0; for (int i = 0; i < N; i++) { final ConstantState state = getChild(i).getConstantState(); if (state != null) { pixelCount += state.addAtlasableBitmaps(atlasList); } } return pixelCount; } /** * Class capable of cloning a Drawable from another Drawable's * ConstantState. Loading graphics/java/android/graphics/drawable/InsetDrawable.java +13 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.graphics.drawable; import com.android.internal.R; import android.annotation.NonNull; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; Loading @@ -26,16 +27,19 @@ import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.Resources.Theme; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Insets; import android.graphics.Outline; import android.graphics.PixelFormat; import android.graphics.PorterDuff.Mode; import android.graphics.drawable.Drawable.ConstantState; import android.graphics.Rect; import android.util.AttributeSet; import java.io.IOException; import java.util.Collection; /** * A Drawable that insets another Drawable by a specified distance. Loading Loading @@ -472,6 +476,15 @@ public class InsetDrawable extends Drawable implements Drawable.Callback { return mCanConstantState; } @Override public int addAtlasableBitmaps(Collection<Bitmap> atlasList) { final ConstantState state = mDrawable.getConstantState(); if (state != null) { return state.addAtlasableBitmaps(atlasList); } return 0; } } private InsetDrawable(InsetState state, Resources res) { Loading Loading
core/java/android/view/ThreadedRenderer.java +6 −3 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.view.View.AttachInfo; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashSet; /** Loading Loading @@ -465,11 +466,13 @@ public class ThreadedRenderer extends HardwareRenderer { final LongSparseArray<Drawable.ConstantState> drawables = resources.getPreloadedDrawables(); final int count = drawables.size(); ArrayList<Bitmap> tmpList = new ArrayList<Bitmap>(); for (int i = 0; i < count; i++) { final Bitmap bitmap = drawables.valueAt(i).getBitmap(); if (bitmap != null && bitmap.getConfig() == Bitmap.Config.ARGB_8888) { preloadedPointers.add(bitmap.mNativeBitmap); drawables.valueAt(i).addAtlasableBitmaps(tmpList); for (int j = 0; j < tmpList.size(); j++) { preloadedPointers.add(tmpList.get(j).mNativeBitmap); } tmpList.clear(); } for (int i = 0; i < map.length; i += 4) { Loading
graphics/java/android/graphics/drawable/BitmapDrawable.java +6 −2 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.util.Collection; /** * A Drawable that wraps a bitmap and can be tiled, stretched, or aligned. You can create a Loading Loading @@ -913,8 +914,11 @@ public class BitmapDrawable extends Drawable { } @Override public Bitmap getBitmap() { return mBitmap; public int addAtlasableBitmaps(Collection<Bitmap> atlasList) { if (isAtlasable(mBitmap) && atlasList.add(mBitmap)) { return mBitmap.getWidth() * mBitmap.getHeight(); } return 0; } @Override Loading
graphics/java/android/graphics/drawable/Drawable.java +9 −2 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ import java.io.IOException; import java.io.InputStream; import java.lang.ref.WeakReference; import java.util.Arrays; import java.util.Collection; /** * A Drawable is a general abstraction for "something that can be drawn." Most Loading Loading @@ -1244,10 +1245,16 @@ public abstract class Drawable { public abstract int getChangingConfigurations(); /** * @return Total pixel count * @hide */ public Bitmap getBitmap() { return null; public int addAtlasableBitmaps(Collection<Bitmap> atlasList) { return 0; } /** @hide */ protected final boolean isAtlasable(Bitmap bitmap) { return bitmap != null && bitmap.getConfig() == Bitmap.Config.ARGB_8888; } /** Loading
graphics/java/android/graphics/drawable/DrawableContainer.java +17 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.annotation.NonNull; import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.Resources.Theme; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Insets; Loading @@ -31,6 +32,8 @@ import android.os.SystemClock; import android.util.LayoutDirection; import android.util.SparseArray; import java.util.Collection; /** * A helper class that contains several {@link Drawable}s and selects which one to use. * Loading Loading @@ -1062,6 +1065,20 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { return true; } /** @hide */ @Override public int addAtlasableBitmaps(Collection<Bitmap> atlasList) { final int N = mNumChildren; int pixelCount = 0; for (int i = 0; i < N; i++) { final ConstantState state = getChild(i).getConstantState(); if (state != null) { pixelCount += state.addAtlasableBitmaps(atlasList); } } return pixelCount; } /** * Class capable of cloning a Drawable from another Drawable's * ConstantState. Loading
graphics/java/android/graphics/drawable/InsetDrawable.java +13 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.graphics.drawable; import com.android.internal.R; import android.annotation.NonNull; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; Loading @@ -26,16 +27,19 @@ import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.Resources.Theme; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Insets; import android.graphics.Outline; import android.graphics.PixelFormat; import android.graphics.PorterDuff.Mode; import android.graphics.drawable.Drawable.ConstantState; import android.graphics.Rect; import android.util.AttributeSet; import java.io.IOException; import java.util.Collection; /** * A Drawable that insets another Drawable by a specified distance. Loading Loading @@ -472,6 +476,15 @@ public class InsetDrawable extends Drawable implements Drawable.Callback { return mCanConstantState; } @Override public int addAtlasableBitmaps(Collection<Bitmap> atlasList) { final ConstantState state = mDrawable.getConstantState(); if (state != null) { return state.addAtlasableBitmaps(atlasList); } return 0; } } private InsetDrawable(InsetState state, Resources res) { Loading