diff options
Diffstat (limited to 'core/java/android/content/res/Resources.java')
-rwxr-xr-x | core/java/android/content/res/Resources.java | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java index 81eb09c..00b49e8 100755 --- a/core/java/android/content/res/Resources.java +++ b/core/java/android/content/res/Resources.java @@ -91,6 +91,7 @@ public class Resources { private static boolean mPreloaded; /*package*/ final TypedValue mTmpValue = new TypedValue(); + /*package*/ final Configuration mTmpConfig = new Configuration(); // These are protected by the mTmpValue lock. private final LongSparseArray<WeakReference<Drawable.ConstantState> > mDrawableCache @@ -1400,18 +1401,30 @@ public class Resources { */ public void updateConfiguration(Configuration config, DisplayMetrics metrics) { + updateConfiguration(config, metrics, null); + } + + /** + * @hide + */ + public void updateConfiguration(Configuration config, + DisplayMetrics metrics, CompatibilityInfo compat) { synchronized (mTmpValue) { + if (compat != null) { + mCompatibilityInfo = compat; + } int configChanges = 0xfffffff; if (config != null) { - configChanges = mConfiguration.updateFrom(config); + mTmpConfig.setTo(config); + mCompatibilityInfo.applyToConfiguration(mTmpConfig); + configChanges = mConfiguration.updateFrom(mTmpConfig); } if (mConfiguration.locale == null) { mConfiguration.locale = Locale.getDefault(); } if (metrics != null) { mMetrics.setTo(metrics); - mMetrics.updateMetrics(mCompatibilityInfo, - mConfiguration.orientation, mConfiguration.screenLayout); + mCompatibilityInfo.applyToDisplayMetrics(mMetrics); } mMetrics.scaledDensity = mMetrics.density * mConfiguration.fontScale; @@ -1500,15 +1513,23 @@ public class Resources { * * @hide */ - public static void updateSystemConfiguration(Configuration config, DisplayMetrics metrics) { + public static void updateSystemConfiguration(Configuration config, DisplayMetrics metrics, + CompatibilityInfo compat) { if (mSystem != null) { - mSystem.updateConfiguration(config, metrics); + mSystem.updateConfiguration(config, metrics, compat); //Log.i(TAG, "Updated system resources " + mSystem // + ": " + mSystem.getConfiguration()); } } /** + * @hide + */ + public static void updateSystemConfiguration(Configuration config, DisplayMetrics metrics) { + updateSystemConfiguration(config, metrics, null); + } + + /** * Return the current display metrics that are in effect for this resource * object. The returned object should be treated as read-only. * |