discord-jadx/app/src/main/java/androidx/core/graphics/drawable/WrappedDrawableApi21.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)
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);
}
}
}