123 lines
4.4 KiB
Java
123 lines
4.4 KiB
Java
package androidx.core.graphics.drawable;
|
|
|
|
import android.content.res.ColorStateList;
|
|
import android.content.res.Resources;
|
|
import android.graphics.Outline;
|
|
import android.graphics.PorterDuff;
|
|
import android.graphics.Rect;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.graphics.drawable.DrawableContainer;
|
|
import android.graphics.drawable.GradientDrawable;
|
|
import android.graphics.drawable.InsetDrawable;
|
|
import android.graphics.drawable.RippleDrawable;
|
|
import android.os.Build;
|
|
import android.util.Log;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.RequiresApi;
|
|
import java.lang.reflect.Method;
|
|
@RequiresApi(21)
|
|
/* loaded from: classes.dex */
|
|
public class WrappedDrawableApi21 extends WrappedDrawableApi14 {
|
|
private static final String TAG = "WrappedDrawableApi21";
|
|
private static Method sIsProjectedDrawableMethod;
|
|
|
|
public WrappedDrawableApi21(Drawable drawable) {
|
|
super(drawable);
|
|
findAndCacheIsProjectedDrawableMethod();
|
|
}
|
|
|
|
public WrappedDrawableApi21(WrappedDrawableState wrappedDrawableState, Resources resources) {
|
|
super(wrappedDrawableState, resources);
|
|
findAndCacheIsProjectedDrawableMethod();
|
|
}
|
|
|
|
private void findAndCacheIsProjectedDrawableMethod() {
|
|
if (sIsProjectedDrawableMethod == null) {
|
|
try {
|
|
sIsProjectedDrawableMethod = Drawable.class.getDeclaredMethod("isProjected", new Class[0]);
|
|
} catch (Exception e) {
|
|
Log.w(TAG, "Failed to retrieve Drawable#isProjected() method", e);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override // android.graphics.drawable.Drawable
|
|
@NonNull
|
|
public Rect getDirtyBounds() {
|
|
return this.mDrawable.getDirtyBounds();
|
|
}
|
|
|
|
@Override // android.graphics.drawable.Drawable
|
|
public void getOutline(@NonNull Outline outline) {
|
|
this.mDrawable.getOutline(outline);
|
|
}
|
|
|
|
@Override // androidx.core.graphics.drawable.WrappedDrawableApi14
|
|
public boolean isCompatTintEnabled() {
|
|
if (Build.VERSION.SDK_INT != 21) {
|
|
return false;
|
|
}
|
|
Drawable drawable = this.mDrawable;
|
|
return (drawable instanceof GradientDrawable) || (drawable instanceof DrawableContainer) || (drawable instanceof InsetDrawable) || (drawable instanceof RippleDrawable);
|
|
}
|
|
|
|
@Override // android.graphics.drawable.Drawable
|
|
public boolean isProjected() {
|
|
Method method;
|
|
Drawable drawable = this.mDrawable;
|
|
if (!(drawable == null || (method = sIsProjectedDrawableMethod) == null)) {
|
|
try {
|
|
return ((Boolean) method.invoke(drawable, new Object[0])).booleanValue();
|
|
} catch (Exception e) {
|
|
Log.w(TAG, "Error calling Drawable#isProjected() method", e);
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
@Override // android.graphics.drawable.Drawable
|
|
public void setHotspot(float f, float f2) {
|
|
this.mDrawable.setHotspot(f, f2);
|
|
}
|
|
|
|
@Override // android.graphics.drawable.Drawable
|
|
public void setHotspotBounds(int i, int i2, int i3, int i4) {
|
|
this.mDrawable.setHotspotBounds(i, i2, i3, i4);
|
|
}
|
|
|
|
@Override // androidx.core.graphics.drawable.WrappedDrawableApi14, android.graphics.drawable.Drawable
|
|
public boolean setState(@NonNull int[] iArr) {
|
|
if (!super.setState(iArr)) {
|
|
return false;
|
|
}
|
|
invalidateSelf();
|
|
return true;
|
|
}
|
|
|
|
@Override // androidx.core.graphics.drawable.WrappedDrawableApi14, android.graphics.drawable.Drawable, androidx.core.graphics.drawable.TintAwareDrawable
|
|
public void setTint(int i) {
|
|
if (isCompatTintEnabled()) {
|
|
super.setTint(i);
|
|
} else {
|
|
this.mDrawable.setTint(i);
|
|
}
|
|
}
|
|
|
|
@Override // androidx.core.graphics.drawable.WrappedDrawableApi14, android.graphics.drawable.Drawable, androidx.core.graphics.drawable.TintAwareDrawable
|
|
public void setTintList(ColorStateList colorStateList) {
|
|
if (isCompatTintEnabled()) {
|
|
super.setTintList(colorStateList);
|
|
} else {
|
|
this.mDrawable.setTintList(colorStateList);
|
|
}
|
|
}
|
|
|
|
@Override // androidx.core.graphics.drawable.WrappedDrawableApi14, android.graphics.drawable.Drawable, androidx.core.graphics.drawable.TintAwareDrawable
|
|
public void setTintMode(@NonNull PorterDuff.Mode mode) {
|
|
if (isCompatTintEnabled()) {
|
|
super.setTintMode(mode);
|
|
} else {
|
|
this.mDrawable.setTintMode(mode);
|
|
}
|
|
}
|
|
}
|