191 lines
7.6 KiB
Java
191 lines
7.6 KiB
Java
package androidx.appcompat.widget;
|
|
|
|
import android.content.Context;
|
|
import android.content.res.ColorStateList;
|
|
import android.graphics.Bitmap;
|
|
import android.graphics.PorterDuff;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.net.Uri;
|
|
import android.util.AttributeSet;
|
|
import android.widget.ImageView;
|
|
import androidx.annotation.DrawableRes;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.annotation.RestrictTo;
|
|
import androidx.core.view.TintableBackgroundView;
|
|
import androidx.core.widget.TintableImageSourceView;
|
|
public class AppCompatImageView extends ImageView implements TintableBackgroundView, TintableImageSourceView {
|
|
private final AppCompatBackgroundHelper mBackgroundTintHelper;
|
|
private final AppCompatImageHelper mImageHelper;
|
|
|
|
public AppCompatImageView(@NonNull Context context) {
|
|
this(context, null);
|
|
}
|
|
|
|
public AppCompatImageView(@NonNull Context context, @Nullable AttributeSet attributeSet) {
|
|
this(context, attributeSet, 0);
|
|
}
|
|
|
|
public AppCompatImageView(@NonNull Context context, @Nullable AttributeSet attributeSet, int i) {
|
|
super(TintContextWrapper.wrap(context), attributeSet, i);
|
|
ThemeUtils.checkAppCompatTheme(this, getContext());
|
|
AppCompatBackgroundHelper appCompatBackgroundHelper = new AppCompatBackgroundHelper(this);
|
|
this.mBackgroundTintHelper = appCompatBackgroundHelper;
|
|
appCompatBackgroundHelper.loadFromAttributes(attributeSet, i);
|
|
AppCompatImageHelper appCompatImageHelper = new AppCompatImageHelper(this);
|
|
this.mImageHelper = appCompatImageHelper;
|
|
appCompatImageHelper.loadFromAttributes(attributeSet, i);
|
|
}
|
|
|
|
@Override // android.widget.ImageView, android.view.View
|
|
public void drawableStateChanged() {
|
|
super.drawableStateChanged();
|
|
AppCompatBackgroundHelper appCompatBackgroundHelper = this.mBackgroundTintHelper;
|
|
if (appCompatBackgroundHelper != null) {
|
|
appCompatBackgroundHelper.applySupportBackgroundTint();
|
|
}
|
|
AppCompatImageHelper appCompatImageHelper = this.mImageHelper;
|
|
if (appCompatImageHelper != null) {
|
|
appCompatImageHelper.applySupportImageTint();
|
|
}
|
|
}
|
|
|
|
@Override // androidx.core.view.TintableBackgroundView
|
|
@Nullable
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
|
|
public ColorStateList getSupportBackgroundTintList() {
|
|
AppCompatBackgroundHelper appCompatBackgroundHelper = this.mBackgroundTintHelper;
|
|
if (appCompatBackgroundHelper != null) {
|
|
return appCompatBackgroundHelper.getSupportBackgroundTintList();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override // androidx.core.view.TintableBackgroundView
|
|
@Nullable
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
|
|
public PorterDuff.Mode getSupportBackgroundTintMode() {
|
|
AppCompatBackgroundHelper appCompatBackgroundHelper = this.mBackgroundTintHelper;
|
|
if (appCompatBackgroundHelper != null) {
|
|
return appCompatBackgroundHelper.getSupportBackgroundTintMode();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override // androidx.core.widget.TintableImageSourceView
|
|
@Nullable
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
|
|
public ColorStateList getSupportImageTintList() {
|
|
AppCompatImageHelper appCompatImageHelper = this.mImageHelper;
|
|
if (appCompatImageHelper != null) {
|
|
return appCompatImageHelper.getSupportImageTintList();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override // androidx.core.widget.TintableImageSourceView
|
|
@Nullable
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
|
|
public PorterDuff.Mode getSupportImageTintMode() {
|
|
AppCompatImageHelper appCompatImageHelper = this.mImageHelper;
|
|
if (appCompatImageHelper != null) {
|
|
return appCompatImageHelper.getSupportImageTintMode();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override // android.widget.ImageView, android.view.View
|
|
public boolean hasOverlappingRendering() {
|
|
return this.mImageHelper.hasOverlappingRendering() && super.hasOverlappingRendering();
|
|
}
|
|
|
|
@Override // android.view.View
|
|
public void setBackgroundDrawable(Drawable drawable) {
|
|
super.setBackgroundDrawable(drawable);
|
|
AppCompatBackgroundHelper appCompatBackgroundHelper = this.mBackgroundTintHelper;
|
|
if (appCompatBackgroundHelper != null) {
|
|
appCompatBackgroundHelper.onSetBackgroundDrawable(drawable);
|
|
}
|
|
}
|
|
|
|
@Override // android.view.View
|
|
public void setBackgroundResource(@DrawableRes int i) {
|
|
super.setBackgroundResource(i);
|
|
AppCompatBackgroundHelper appCompatBackgroundHelper = this.mBackgroundTintHelper;
|
|
if (appCompatBackgroundHelper != null) {
|
|
appCompatBackgroundHelper.onSetBackgroundResource(i);
|
|
}
|
|
}
|
|
|
|
@Override // android.widget.ImageView
|
|
public void setImageBitmap(Bitmap bitmap) {
|
|
super.setImageBitmap(bitmap);
|
|
AppCompatImageHelper appCompatImageHelper = this.mImageHelper;
|
|
if (appCompatImageHelper != null) {
|
|
appCompatImageHelper.applySupportImageTint();
|
|
}
|
|
}
|
|
|
|
@Override // android.widget.ImageView
|
|
public void setImageDrawable(@Nullable Drawable drawable) {
|
|
super.setImageDrawable(drawable);
|
|
AppCompatImageHelper appCompatImageHelper = this.mImageHelper;
|
|
if (appCompatImageHelper != null) {
|
|
appCompatImageHelper.applySupportImageTint();
|
|
}
|
|
}
|
|
|
|
@Override // android.widget.ImageView
|
|
public void setImageResource(@DrawableRes int i) {
|
|
AppCompatImageHelper appCompatImageHelper = this.mImageHelper;
|
|
if (appCompatImageHelper != null) {
|
|
appCompatImageHelper.setImageResource(i);
|
|
}
|
|
}
|
|
|
|
@Override // android.widget.ImageView
|
|
public void setImageURI(@Nullable Uri uri) {
|
|
super.setImageURI(uri);
|
|
AppCompatImageHelper appCompatImageHelper = this.mImageHelper;
|
|
if (appCompatImageHelper != null) {
|
|
appCompatImageHelper.applySupportImageTint();
|
|
}
|
|
}
|
|
|
|
@Override // androidx.core.view.TintableBackgroundView
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
|
|
public void setSupportBackgroundTintList(@Nullable ColorStateList colorStateList) {
|
|
AppCompatBackgroundHelper appCompatBackgroundHelper = this.mBackgroundTintHelper;
|
|
if (appCompatBackgroundHelper != null) {
|
|
appCompatBackgroundHelper.setSupportBackgroundTintList(colorStateList);
|
|
}
|
|
}
|
|
|
|
@Override // androidx.core.view.TintableBackgroundView
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
|
|
public void setSupportBackgroundTintMode(@Nullable PorterDuff.Mode mode) {
|
|
AppCompatBackgroundHelper appCompatBackgroundHelper = this.mBackgroundTintHelper;
|
|
if (appCompatBackgroundHelper != null) {
|
|
appCompatBackgroundHelper.setSupportBackgroundTintMode(mode);
|
|
}
|
|
}
|
|
|
|
@Override // androidx.core.widget.TintableImageSourceView
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
|
|
public void setSupportImageTintList(@Nullable ColorStateList colorStateList) {
|
|
AppCompatImageHelper appCompatImageHelper = this.mImageHelper;
|
|
if (appCompatImageHelper != null) {
|
|
appCompatImageHelper.setSupportImageTintList(colorStateList);
|
|
}
|
|
}
|
|
|
|
@Override // androidx.core.widget.TintableImageSourceView
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
|
|
public void setSupportImageTintMode(@Nullable PorterDuff.Mode mode) {
|
|
AppCompatImageHelper appCompatImageHelper = this.mImageHelper;
|
|
if (appCompatImageHelper != null) {
|
|
appCompatImageHelper.setSupportImageTintMode(mode);
|
|
}
|
|
}
|
|
}
|