Make LD stateful / opacity management look more like DC
Some initial cleanup before making changes to either class. Test: n/a, refactoring only Bug: 33124798 Change-Id: Idf0328bcc6de72b694ca7b35122ecad845cf1c4b
This commit is contained in:
@@ -1128,8 +1128,6 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
|
||||
|
||||
createAllFutures();
|
||||
|
||||
mCheckedOpacity = true;
|
||||
|
||||
final int N = mNumChildren;
|
||||
final Drawable[] drawables = mDrawables;
|
||||
int op = (N > 0) ? drawables[0].getOpacity() : PixelFormat.TRANSPARENT;
|
||||
@@ -1138,6 +1136,7 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
|
||||
}
|
||||
|
||||
mOpacity = op;
|
||||
mCheckedOpacity = true;
|
||||
return op;
|
||||
}
|
||||
|
||||
@@ -1148,19 +1147,19 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
|
||||
|
||||
createAllFutures();
|
||||
|
||||
mCheckedStateful = true;
|
||||
|
||||
final int N = mNumChildren;
|
||||
final Drawable[] drawables = mDrawables;
|
||||
boolean isStateful = false;
|
||||
for (int i = 0; i < N; i++) {
|
||||
if (drawables[i].isStateful()) {
|
||||
mStateful = true;
|
||||
return true;
|
||||
isStateful = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
mStateful = false;
|
||||
return false;
|
||||
mStateful = isStateful;
|
||||
mCheckedStateful = true;
|
||||
return isStateful;
|
||||
}
|
||||
|
||||
public void growArray(int oldSize, int newSize) {
|
||||
|
||||
@@ -137,7 +137,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
layers[i].setCallback(this);
|
||||
mLayerState.mChildrenChangingConfigurations |= layers[i].getChangingConfigurations();
|
||||
}
|
||||
mLayerState.mNum = length;
|
||||
mLayerState.mNumChildren = length;
|
||||
mLayerState.mChildren = r;
|
||||
|
||||
ensurePadding();
|
||||
@@ -154,7 +154,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
*/
|
||||
LayerDrawable(@Nullable LayerState state, @Nullable Resources res) {
|
||||
mLayerState = createConstantState(state, res);
|
||||
if (mLayerState.mNum > 0) {
|
||||
if (mLayerState.mNumChildren > 0) {
|
||||
ensurePadding();
|
||||
refreshPadding();
|
||||
}
|
||||
@@ -185,7 +185,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
a.recycle();
|
||||
|
||||
final ChildDrawable[] array = state.mChildren;
|
||||
final int N = state.mNum;
|
||||
final int N = state.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final ChildDrawable layer = array[i];
|
||||
layer.setDensity(density);
|
||||
@@ -217,7 +217,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
}
|
||||
|
||||
final ChildDrawable[] array = state.mChildren;
|
||||
final int N = state.mNum;
|
||||
final int N = state.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final ChildDrawable layer = array[i];
|
||||
layer.setDensity(density);
|
||||
@@ -416,7 +416,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
}
|
||||
|
||||
final ChildDrawable[] layers = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
if (layers[i].mDrawable.isProjected()) {
|
||||
return true;
|
||||
@@ -435,7 +435,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
int addLayer(@NonNull ChildDrawable layer) {
|
||||
final LayerState st = mLayerState;
|
||||
final int N = st.mChildren != null ? st.mChildren.length : 0;
|
||||
final int i = st.mNum;
|
||||
final int i = st.mNumChildren;
|
||||
if (i >= N) {
|
||||
final ChildDrawable[] nu = new ChildDrawable[N + 10];
|
||||
if (i > 0) {
|
||||
@@ -446,7 +446,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
}
|
||||
|
||||
st.mChildren[i] = layer;
|
||||
st.mNum++;
|
||||
st.mNumChildren++;
|
||||
st.invalidateCache();
|
||||
return i;
|
||||
}
|
||||
@@ -514,7 +514,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
*/
|
||||
public Drawable findDrawableByLayerId(int id) {
|
||||
final ChildDrawable[] layers = mLayerState.mChildren;
|
||||
for (int i = mLayerState.mNum - 1; i >= 0; i--) {
|
||||
for (int i = mLayerState.mNumChildren - 1; i >= 0; i--) {
|
||||
if (layers[i].mId == id) {
|
||||
return layers[i].mDrawable;
|
||||
}
|
||||
@@ -549,7 +549,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
* @attr ref android.R.styleable#LayerDrawableItem_id
|
||||
*/
|
||||
public int getId(int index) {
|
||||
if (index >= mLayerState.mNum) {
|
||||
if (index >= mLayerState.mNumChildren) {
|
||||
throw new IndexOutOfBoundsException();
|
||||
}
|
||||
return mLayerState.mChildren[index].mId;
|
||||
@@ -561,7 +561,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
* @return The number of layers.
|
||||
*/
|
||||
public int getNumberOfLayers() {
|
||||
return mLayerState.mNum;
|
||||
return mLayerState.mNumChildren;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -593,7 +593,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
*/
|
||||
public int findIndexByLayerId(int id) {
|
||||
final ChildDrawable[] layers = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final ChildDrawable childDrawable = layers[i];
|
||||
if (childDrawable.mId == id) {
|
||||
@@ -615,7 +615,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
* @attr ref android.R.styleable#LayerDrawableItem_drawable
|
||||
*/
|
||||
public void setDrawable(int index, Drawable drawable) {
|
||||
if (index >= mLayerState.mNum) {
|
||||
if (index >= mLayerState.mNumChildren) {
|
||||
throw new IndexOutOfBoundsException();
|
||||
}
|
||||
|
||||
@@ -651,7 +651,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
* @attr ref android.R.styleable#LayerDrawableItem_drawable
|
||||
*/
|
||||
public Drawable getDrawable(int index) {
|
||||
if (index >= mLayerState.mNum) {
|
||||
if (index >= mLayerState.mNumChildren) {
|
||||
throw new IndexOutOfBoundsException();
|
||||
}
|
||||
return mLayerState.mChildren[index].mDrawable;
|
||||
@@ -1003,7 +1003,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
@Override
|
||||
public void draw(Canvas canvas) {
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1230,7 +1230,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
|
||||
// Add all the padding.
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
refreshChildPadding(i, array[i]);
|
||||
|
||||
@@ -1249,7 +1249,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
|
||||
// Take the max padding.
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
refreshChildPadding(i, array[i]);
|
||||
|
||||
@@ -1268,7 +1268,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
@Override
|
||||
public void getOutline(@NonNull Outline outline) {
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1283,7 +1283,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
@Override
|
||||
public void setHotspot(float x, float y) {
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1295,7 +1295,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
@Override
|
||||
public void setHotspotBounds(int left, int top, int right, int bottom) {
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1323,7 +1323,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
public boolean setVisible(boolean visible, boolean restart) {
|
||||
final boolean changed = super.setVisible(visible, restart);
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1337,7 +1337,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
@Override
|
||||
public void setDither(boolean dither) {
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1349,7 +1349,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
@Override
|
||||
public void setAlpha(int alpha) {
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1371,7 +1371,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
@Override
|
||||
public void setColorFilter(ColorFilter colorFilter) {
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1383,7 +1383,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
@Override
|
||||
public void setTintList(ColorStateList tint) {
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1395,7 +1395,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
@Override
|
||||
public void setTintMode(Mode tintMode) {
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1406,7 +1406,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
|
||||
private Drawable getFirstNonNullDrawable() {
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1444,7 +1444,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
mLayerState.mAutoMirrored = mirrored;
|
||||
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1461,7 +1461,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
@Override
|
||||
public void jumpToCurrentState() {
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1480,7 +1480,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
boolean changed = false;
|
||||
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null && dr.isStateful() && dr.setState(state)) {
|
||||
@@ -1501,7 +1501,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
boolean changed = false;
|
||||
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null && dr.setLevel(level)) {
|
||||
@@ -1543,7 +1543,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
final boolean isPaddingNested = mLayerState.mPaddingMode == PADDING_MODE_NEST;
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
|
||||
for (int i = 0, count = mLayerState.mNum; i < count; i++) {
|
||||
for (int i = 0, count = mLayerState.mNumChildren; i < count; i++) {
|
||||
final ChildDrawable r = array[i];
|
||||
final Drawable d = r.mDrawable;
|
||||
if (d == null) {
|
||||
@@ -1642,7 +1642,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
final boolean nest = mLayerState.mPaddingMode == PADDING_MODE_NEST;
|
||||
final boolean isLayoutRtl = getLayoutDirection() == LayoutDirection.RTL;
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final ChildDrawable r = array[i];
|
||||
if (r.mDrawable == null) {
|
||||
@@ -1684,7 +1684,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
|
||||
final boolean nest = mLayerState.mPaddingMode == PADDING_MODE_NEST;
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final ChildDrawable r = array[i];
|
||||
if (r.mDrawable == null) {
|
||||
@@ -1733,7 +1733,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
* Ensures the child padding caches are large enough.
|
||||
*/
|
||||
void ensurePadding() {
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
if (mPaddingL != null && mPaddingL.length >= N) {
|
||||
return;
|
||||
}
|
||||
@@ -1745,7 +1745,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
}
|
||||
|
||||
void refreshPadding() {
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
refreshChildPadding(i, array[i]);
|
||||
@@ -1766,7 +1766,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
if (!mMutated && super.mutate() == this) {
|
||||
mLayerState = createConstantState(mLayerState, null);
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1785,7 +1785,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
super.clearMutated();
|
||||
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1800,7 +1800,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
boolean changed = false;
|
||||
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int N = mLayerState.mNum;
|
||||
final int N = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null) {
|
||||
@@ -1905,7 +1905,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
static class LayerState extends ConstantState {
|
||||
private int[] mThemeAttrs;
|
||||
|
||||
int mNum;
|
||||
int mNumChildren;
|
||||
ChildDrawable[] mChildren;
|
||||
|
||||
int mDensity;
|
||||
@@ -1922,10 +1922,10 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
@Config int mChangingConfigurations;
|
||||
@Config int mChildrenChangingConfigurations;
|
||||
|
||||
private boolean mHaveOpacity;
|
||||
private boolean mCheckedOpacity;
|
||||
private int mOpacity;
|
||||
|
||||
private boolean mHaveIsStateful;
|
||||
private boolean mCheckedStateful;
|
||||
private boolean mIsStateful;
|
||||
|
||||
private boolean mAutoMirrored = false;
|
||||
@@ -1938,9 +1938,9 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
|
||||
if (orig != null) {
|
||||
final ChildDrawable[] origChildDrawable = orig.mChildren;
|
||||
final int N = orig.mNum;
|
||||
final int N = orig.mNumChildren;
|
||||
|
||||
mNum = N;
|
||||
mNumChildren = N;
|
||||
mChildren = new ChildDrawable[N];
|
||||
|
||||
mChangingConfigurations = orig.mChangingConfigurations;
|
||||
@@ -1951,9 +1951,9 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
mChildren[i] = new ChildDrawable(or, owner, res);
|
||||
}
|
||||
|
||||
mHaveOpacity = orig.mHaveOpacity;
|
||||
mCheckedOpacity = orig.mCheckedOpacity;
|
||||
mOpacity = orig.mOpacity;
|
||||
mHaveIsStateful = orig.mHaveIsStateful;
|
||||
mCheckedStateful = orig.mCheckedStateful;
|
||||
mIsStateful = orig.mIsStateful;
|
||||
mAutoMirrored = orig.mAutoMirrored;
|
||||
mPaddingMode = orig.mPaddingMode;
|
||||
@@ -1970,7 +1970,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
applyDensityScaling(orig.mDensity, mDensity);
|
||||
}
|
||||
} else {
|
||||
mNum = 0;
|
||||
mNumChildren = 0;
|
||||
mChildren = null;
|
||||
}
|
||||
}
|
||||
@@ -2022,7 +2022,7 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
}
|
||||
|
||||
final ChildDrawable[] array = mChildren;
|
||||
final int N = mNum;
|
||||
final int N = mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final ChildDrawable layer = array[i];
|
||||
if (layer.canApplyTheme()) {
|
||||
@@ -2050,12 +2050,12 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
}
|
||||
|
||||
public final int getOpacity() {
|
||||
if (mHaveOpacity) {
|
||||
if (mCheckedOpacity) {
|
||||
return mOpacity;
|
||||
}
|
||||
|
||||
final int N = mNumChildren;
|
||||
final ChildDrawable[] array = mChildren;
|
||||
final int N = mNum;
|
||||
|
||||
// Seek to the first non-null drawable.
|
||||
int firstIndex = -1;
|
||||
@@ -2082,17 +2082,17 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
}
|
||||
|
||||
mOpacity = op;
|
||||
mHaveOpacity = true;
|
||||
mCheckedOpacity = true;
|
||||
return op;
|
||||
}
|
||||
|
||||
public final boolean isStateful() {
|
||||
if (mHaveIsStateful) {
|
||||
if (mCheckedStateful) {
|
||||
return mIsStateful;
|
||||
}
|
||||
|
||||
final int N = mNumChildren;
|
||||
final ChildDrawable[] array = mChildren;
|
||||
final int N = mNum;
|
||||
boolean isStateful = false;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
@@ -2103,13 +2103,13 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
}
|
||||
|
||||
mIsStateful = isStateful;
|
||||
mHaveIsStateful = true;
|
||||
mCheckedStateful = true;
|
||||
return isStateful;
|
||||
}
|
||||
|
||||
public final boolean canConstantState() {
|
||||
final ChildDrawable[] array = mChildren;
|
||||
final int N = mNum;
|
||||
final int N = mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Drawable dr = array[i].mDrawable;
|
||||
if (dr != null && dr.getConstantState() == null) {
|
||||
@@ -2122,8 +2122,8 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
|
||||
}
|
||||
|
||||
public void invalidateCache() {
|
||||
mHaveOpacity = false;
|
||||
mHaveIsStateful = false;
|
||||
mCheckedOpacity = false;
|
||||
mCheckedStateful = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -667,7 +667,7 @@ public class RippleDrawable extends LayerDrawable {
|
||||
public void getOutline(@NonNull Outline outline) {
|
||||
final LayerState state = mLayerState;
|
||||
final ChildDrawable[] children = state.mChildren;
|
||||
final int N = state.mNum;
|
||||
final int N = state.mNumChildren;
|
||||
for (int i = 0; i < N; i++) {
|
||||
if (children[i].mId != R.id.mask) {
|
||||
children[i].mDrawable.getOutline(outline);
|
||||
@@ -815,7 +815,7 @@ public class RippleDrawable extends LayerDrawable {
|
||||
|
||||
// Check for non-opaque, non-mask content.
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int count = mLayerState.mNum;
|
||||
final int count = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < count; i++) {
|
||||
if (array[i].mDrawable.getOpacity() != PixelFormat.OPAQUE) {
|
||||
return MASK_CONTENT;
|
||||
@@ -829,7 +829,7 @@ public class RippleDrawable extends LayerDrawable {
|
||||
private void drawContent(Canvas canvas) {
|
||||
// Draw everything except the mask.
|
||||
final ChildDrawable[] array = mLayerState.mChildren;
|
||||
final int count = mLayerState.mNum;
|
||||
final int count = mLayerState.mNumChildren;
|
||||
for (int i = 0; i < count; i++) {
|
||||
if (array[i].mId != R.id.mask) {
|
||||
array[i].mDrawable.draw(canvas);
|
||||
@@ -1045,7 +1045,7 @@ public class RippleDrawable extends LayerDrawable {
|
||||
mLayerState = mState;
|
||||
mDensity = Drawable.resolveDensity(res, mState.mDensity);
|
||||
|
||||
if (mState.mNum > 0) {
|
||||
if (mState.mNumChildren > 0) {
|
||||
ensurePadding();
|
||||
refreshPadding();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user