ADD week 5
This commit is contained in:
		| @@ -0,0 +1,143 @@ | ||||
| package androidx.appcompat.view; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.content.ContextWrapper; | ||||
| import android.content.res.AssetManager; | ||||
| import android.content.res.Configuration; | ||||
| import android.content.res.Resources; | ||||
| import android.os.Build; | ||||
| import android.view.LayoutInflater; | ||||
| import androidx.appcompat.R; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class ContextThemeWrapper extends ContextWrapper { | ||||
|     private static Configuration sEmptyConfig; | ||||
|     private LayoutInflater mInflater; | ||||
|     private Configuration mOverrideConfiguration; | ||||
|     private Resources mResources; | ||||
|     private Resources.Theme mTheme; | ||||
|     private int mThemeResource; | ||||
|  | ||||
|     public int getThemeResId() { | ||||
|         return this.mThemeResource; | ||||
|     } | ||||
|  | ||||
|     public ContextThemeWrapper() { | ||||
|         super(null); | ||||
|     } | ||||
|  | ||||
|     public ContextThemeWrapper(Context context, int i) { | ||||
|         super(context); | ||||
|         this.mThemeResource = i; | ||||
|     } | ||||
|  | ||||
|     public ContextThemeWrapper(Context context, Resources.Theme theme) { | ||||
|         super(context); | ||||
|         this.mTheme = theme; | ||||
|     } | ||||
|  | ||||
|     @Override // android.content.ContextWrapper | ||||
|     protected void attachBaseContext(Context context) { | ||||
|         super.attachBaseContext(context); | ||||
|     } | ||||
|  | ||||
|     public void applyOverrideConfiguration(Configuration configuration) { | ||||
|         if (this.mResources != null) { | ||||
|             throw new IllegalStateException("getResources() or getAssets() has already been called"); | ||||
|         } | ||||
|         if (this.mOverrideConfiguration != null) { | ||||
|             throw new IllegalStateException("Override configuration has already been set"); | ||||
|         } | ||||
|         this.mOverrideConfiguration = new Configuration(configuration); | ||||
|     } | ||||
|  | ||||
|     @Override // android.content.ContextWrapper, android.content.Context | ||||
|     public Resources getResources() { | ||||
|         return getResourcesInternal(); | ||||
|     } | ||||
|  | ||||
|     private Resources getResourcesInternal() { | ||||
|         if (this.mResources == null) { | ||||
|             if (this.mOverrideConfiguration == null || (Build.VERSION.SDK_INT >= 26 && isEmptyConfiguration(this.mOverrideConfiguration))) { | ||||
|                 this.mResources = super.getResources(); | ||||
|             } else { | ||||
|                 this.mResources = Api17Impl.createConfigurationContext(this, this.mOverrideConfiguration).getResources(); | ||||
|             } | ||||
|         } | ||||
|         return this.mResources; | ||||
|     } | ||||
|  | ||||
|     @Override // android.content.ContextWrapper, android.content.Context | ||||
|     public void setTheme(int i) { | ||||
|         if (this.mThemeResource != i) { | ||||
|             this.mThemeResource = i; | ||||
|             initializeTheme(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.content.ContextWrapper, android.content.Context | ||||
|     public Resources.Theme getTheme() { | ||||
|         Resources.Theme theme = this.mTheme; | ||||
|         if (theme != null) { | ||||
|             return theme; | ||||
|         } | ||||
|         if (this.mThemeResource == 0) { | ||||
|             this.mThemeResource = R.style.Theme_AppCompat_Light; | ||||
|         } | ||||
|         initializeTheme(); | ||||
|         return this.mTheme; | ||||
|     } | ||||
|  | ||||
|     @Override // android.content.ContextWrapper, android.content.Context | ||||
|     public Object getSystemService(String str) { | ||||
|         if (!"layout_inflater".equals(str)) { | ||||
|             return getBaseContext().getSystemService(str); | ||||
|         } | ||||
|         if (this.mInflater == null) { | ||||
|             this.mInflater = LayoutInflater.from(getBaseContext()).cloneInContext(this); | ||||
|         } | ||||
|         return this.mInflater; | ||||
|     } | ||||
|  | ||||
|     protected void onApplyThemeResource(Resources.Theme theme, int i, boolean z) { | ||||
|         theme.applyStyle(i, true); | ||||
|     } | ||||
|  | ||||
|     private void initializeTheme() { | ||||
|         boolean z = this.mTheme == null; | ||||
|         if (z) { | ||||
|             this.mTheme = getResources().newTheme(); | ||||
|             Resources.Theme theme = getBaseContext().getTheme(); | ||||
|             if (theme != null) { | ||||
|                 this.mTheme.setTo(theme); | ||||
|             } | ||||
|         } | ||||
|         onApplyThemeResource(this.mTheme, this.mThemeResource, z); | ||||
|     } | ||||
|  | ||||
|     @Override // android.content.ContextWrapper, android.content.Context | ||||
|     public AssetManager getAssets() { | ||||
|         return getResources().getAssets(); | ||||
|     } | ||||
|  | ||||
|     private static boolean isEmptyConfiguration(Configuration configuration) { | ||||
|         if (configuration == null) { | ||||
|             return true; | ||||
|         } | ||||
|         if (sEmptyConfig == null) { | ||||
|             Configuration configuration2 = new Configuration(); | ||||
|             configuration2.fontScale = 0.0f; | ||||
|             sEmptyConfig = configuration2; | ||||
|         } | ||||
|         return configuration.equals(sEmptyConfig); | ||||
|     } | ||||
|  | ||||
|     static class Api17Impl { | ||||
|         private Api17Impl() { | ||||
|         } | ||||
|  | ||||
|         static Context createConfigurationContext(ContextThemeWrapper contextThemeWrapper, Configuration configuration) { | ||||
|             return contextThemeWrapper.createConfigurationContext(configuration); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user