- Added realracing3-community.apk (71.57 MB) - Removed 32-bit support (armeabi-v7a) - Only includes arm64-v8a libraries - Decompiled source code included - Added README-community.md with analysis
253 lines
11 KiB
Java
253 lines
11 KiB
Java
package androidx.appcompat.graphics.drawable;
|
|
|
|
import android.content.Context;
|
|
import android.content.res.Resources;
|
|
import android.content.res.TypedArray;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.util.AttributeSet;
|
|
import android.util.StateSet;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.annotation.RequiresApi;
|
|
import androidx.appcompat.graphics.drawable.DrawableContainerCompat;
|
|
import androidx.appcompat.resources.Compatibility;
|
|
import androidx.appcompat.resources.R;
|
|
import androidx.appcompat.widget.ResourceManagerInternal;
|
|
import androidx.core.content.res.TypedArrayUtils;
|
|
import java.io.IOException;
|
|
import org.xmlpull.v1.XmlPullParser;
|
|
import org.xmlpull.v1.XmlPullParserException;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class StateListDrawableCompat extends DrawableContainerCompat {
|
|
private static final boolean DEBUG = false;
|
|
private static final String TAG = "StateListDrawableCompat";
|
|
private boolean mMutated;
|
|
private StateListState mStateListState;
|
|
|
|
public StateListState getStateListState() {
|
|
return this.mStateListState;
|
|
}
|
|
|
|
@Override // androidx.appcompat.graphics.drawable.DrawableContainerCompat, android.graphics.drawable.Drawable
|
|
public boolean isStateful() {
|
|
return true;
|
|
}
|
|
|
|
public StateListDrawableCompat() {
|
|
this(null, null);
|
|
}
|
|
|
|
public void addState(int[] iArr, Drawable drawable) {
|
|
if (drawable != null) {
|
|
this.mStateListState.addStateSet(iArr, drawable);
|
|
onStateChange(getState());
|
|
}
|
|
}
|
|
|
|
@Override // androidx.appcompat.graphics.drawable.DrawableContainerCompat, android.graphics.drawable.Drawable
|
|
public boolean onStateChange(@NonNull int[] iArr) {
|
|
boolean onStateChange = super.onStateChange(iArr);
|
|
int indexOfStateSet = this.mStateListState.indexOfStateSet(iArr);
|
|
if (indexOfStateSet < 0) {
|
|
indexOfStateSet = this.mStateListState.indexOfStateSet(StateSet.WILD_CARD);
|
|
}
|
|
return selectDrawable(indexOfStateSet) || onStateChange;
|
|
}
|
|
|
|
public void inflate(@NonNull Context context, @NonNull Resources resources, @NonNull XmlPullParser xmlPullParser, @NonNull AttributeSet attributeSet, @Nullable Resources.Theme theme) throws XmlPullParserException, IOException {
|
|
TypedArray obtainAttributes = TypedArrayUtils.obtainAttributes(resources, theme, attributeSet, R.styleable.StateListDrawable);
|
|
setVisible(obtainAttributes.getBoolean(R.styleable.StateListDrawable_android_visible, true), true);
|
|
updateStateFromTypedArray(obtainAttributes);
|
|
updateDensity(resources);
|
|
obtainAttributes.recycle();
|
|
inflateChildElements(context, resources, xmlPullParser, attributeSet, theme);
|
|
onStateChange(getState());
|
|
}
|
|
|
|
private void updateStateFromTypedArray(TypedArray typedArray) {
|
|
StateListState stateListState = this.mStateListState;
|
|
stateListState.mChangingConfigurations |= Compatibility.Api21Impl.getChangingConfigurations(typedArray);
|
|
stateListState.mVariablePadding = typedArray.getBoolean(R.styleable.StateListDrawable_android_variablePadding, stateListState.mVariablePadding);
|
|
stateListState.mConstantSize = typedArray.getBoolean(R.styleable.StateListDrawable_android_constantSize, stateListState.mConstantSize);
|
|
stateListState.mEnterFadeDuration = typedArray.getInt(R.styleable.StateListDrawable_android_enterFadeDuration, stateListState.mEnterFadeDuration);
|
|
stateListState.mExitFadeDuration = typedArray.getInt(R.styleable.StateListDrawable_android_exitFadeDuration, stateListState.mExitFadeDuration);
|
|
stateListState.mDither = typedArray.getBoolean(R.styleable.StateListDrawable_android_dither, stateListState.mDither);
|
|
}
|
|
|
|
private void inflateChildElements(Context context, Resources resources, XmlPullParser xmlPullParser, AttributeSet attributeSet, Resources.Theme theme) throws XmlPullParserException, IOException {
|
|
int next;
|
|
StateListState stateListState = this.mStateListState;
|
|
int depth = xmlPullParser.getDepth() + 1;
|
|
while (true) {
|
|
int next2 = xmlPullParser.next();
|
|
if (next2 == 1) {
|
|
return;
|
|
}
|
|
int depth2 = xmlPullParser.getDepth();
|
|
if (depth2 < depth && next2 == 3) {
|
|
return;
|
|
}
|
|
if (next2 == 2 && depth2 <= depth && xmlPullParser.getName().equals("item")) {
|
|
TypedArray obtainAttributes = TypedArrayUtils.obtainAttributes(resources, theme, attributeSet, R.styleable.StateListDrawableItem);
|
|
int resourceId = obtainAttributes.getResourceId(R.styleable.StateListDrawableItem_android_drawable, -1);
|
|
Drawable drawable = resourceId > 0 ? ResourceManagerInternal.get().getDrawable(context, resourceId) : null;
|
|
obtainAttributes.recycle();
|
|
int[] extractStateSet = extractStateSet(attributeSet);
|
|
if (drawable == null) {
|
|
do {
|
|
next = xmlPullParser.next();
|
|
} while (next == 4);
|
|
if (next != 2) {
|
|
throw new XmlPullParserException(xmlPullParser.getPositionDescription() + ": <item> tag requires a 'drawable' attribute or child tag defining a drawable");
|
|
}
|
|
drawable = Compatibility.Api21Impl.createFromXmlInner(resources, xmlPullParser, attributeSet, theme);
|
|
}
|
|
stateListState.addStateSet(extractStateSet, drawable);
|
|
}
|
|
}
|
|
}
|
|
|
|
public int[] extractStateSet(AttributeSet attributeSet) {
|
|
int attributeCount = attributeSet.getAttributeCount();
|
|
int[] iArr = new int[attributeCount];
|
|
int i = 0;
|
|
for (int i2 = 0; i2 < attributeCount; i2++) {
|
|
int attributeNameResource = attributeSet.getAttributeNameResource(i2);
|
|
if (attributeNameResource != 0 && attributeNameResource != 16842960 && attributeNameResource != 16843161) {
|
|
int i3 = i + 1;
|
|
if (!attributeSet.getAttributeBooleanValue(i2, false)) {
|
|
attributeNameResource = -attributeNameResource;
|
|
}
|
|
iArr[i] = attributeNameResource;
|
|
i = i3;
|
|
}
|
|
}
|
|
return StateSet.trimStateSet(iArr, i);
|
|
}
|
|
|
|
public int getStateCount() {
|
|
return this.mStateListState.getChildCount();
|
|
}
|
|
|
|
public int[] getStateSet(int i) {
|
|
return this.mStateListState.mStateSets[i];
|
|
}
|
|
|
|
public Drawable getStateDrawable(int i) {
|
|
return this.mStateListState.getChild(i);
|
|
}
|
|
|
|
public int getStateDrawableIndex(int[] iArr) {
|
|
return this.mStateListState.indexOfStateSet(iArr);
|
|
}
|
|
|
|
@Override // androidx.appcompat.graphics.drawable.DrawableContainerCompat, android.graphics.drawable.Drawable
|
|
@NonNull
|
|
public Drawable mutate() {
|
|
if (!this.mMutated && super.mutate() == this) {
|
|
this.mStateListState.mutate();
|
|
this.mMutated = true;
|
|
}
|
|
return this;
|
|
}
|
|
|
|
@Override // androidx.appcompat.graphics.drawable.DrawableContainerCompat
|
|
public StateListState cloneConstantState() {
|
|
return new StateListState(this.mStateListState, this, null);
|
|
}
|
|
|
|
@Override // androidx.appcompat.graphics.drawable.DrawableContainerCompat
|
|
public void clearMutated() {
|
|
super.clearMutated();
|
|
this.mMutated = false;
|
|
}
|
|
|
|
public static class StateListState extends DrawableContainerCompat.DrawableContainerState {
|
|
int[][] mStateSets;
|
|
|
|
public StateListState(StateListState stateListState, StateListDrawableCompat stateListDrawableCompat, Resources resources) {
|
|
super(stateListState, stateListDrawableCompat, resources);
|
|
if (stateListState != null) {
|
|
this.mStateSets = stateListState.mStateSets;
|
|
} else {
|
|
this.mStateSets = new int[getCapacity()][];
|
|
}
|
|
}
|
|
|
|
@Override // androidx.appcompat.graphics.drawable.DrawableContainerCompat.DrawableContainerState
|
|
public void mutate() {
|
|
int[][] iArr = this.mStateSets;
|
|
int[][] iArr2 = new int[iArr.length][];
|
|
for (int length = iArr.length - 1; length >= 0; length--) {
|
|
int[] iArr3 = this.mStateSets[length];
|
|
iArr2[length] = iArr3 != null ? (int[]) iArr3.clone() : null;
|
|
}
|
|
this.mStateSets = iArr2;
|
|
}
|
|
|
|
public int addStateSet(int[] iArr, Drawable drawable) {
|
|
int addChild = addChild(drawable);
|
|
this.mStateSets[addChild] = iArr;
|
|
return addChild;
|
|
}
|
|
|
|
public int indexOfStateSet(int[] iArr) {
|
|
int[][] iArr2 = this.mStateSets;
|
|
int childCount = getChildCount();
|
|
for (int i = 0; i < childCount; i++) {
|
|
if (StateSet.stateSetMatches(iArr2[i], iArr)) {
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
@Override // android.graphics.drawable.Drawable.ConstantState
|
|
@NonNull
|
|
public Drawable newDrawable() {
|
|
return new StateListDrawableCompat(this, null);
|
|
}
|
|
|
|
@Override // android.graphics.drawable.Drawable.ConstantState
|
|
@NonNull
|
|
public Drawable newDrawable(Resources resources) {
|
|
return new StateListDrawableCompat(this, resources);
|
|
}
|
|
|
|
@Override // androidx.appcompat.graphics.drawable.DrawableContainerCompat.DrawableContainerState
|
|
public void growArray(int i, int i2) {
|
|
super.growArray(i, i2);
|
|
int[][] iArr = new int[i2][];
|
|
System.arraycopy(this.mStateSets, 0, iArr, 0, i);
|
|
this.mStateSets = iArr;
|
|
}
|
|
}
|
|
|
|
@Override // androidx.appcompat.graphics.drawable.DrawableContainerCompat, android.graphics.drawable.Drawable
|
|
@RequiresApi(21)
|
|
public void applyTheme(@NonNull Resources.Theme theme) {
|
|
super.applyTheme(theme);
|
|
onStateChange(getState());
|
|
}
|
|
|
|
@Override // androidx.appcompat.graphics.drawable.DrawableContainerCompat
|
|
public void setConstantState(@NonNull DrawableContainerCompat.DrawableContainerState drawableContainerState) {
|
|
super.setConstantState(drawableContainerState);
|
|
if (drawableContainerState instanceof StateListState) {
|
|
this.mStateListState = (StateListState) drawableContainerState;
|
|
}
|
|
}
|
|
|
|
public StateListDrawableCompat(StateListState stateListState, Resources resources) {
|
|
setConstantState(new StateListState(stateListState, this, resources));
|
|
onStateChange(getState());
|
|
}
|
|
|
|
public StateListDrawableCompat(@Nullable StateListState stateListState) {
|
|
if (stateListState != null) {
|
|
setConstantState(stateListState);
|
|
}
|
|
}
|
|
}
|