Loading core/java/android/app/ContextImpl.java +6 −6 Original line number Diff line number Diff line Loading @@ -473,14 +473,14 @@ class ContextImpl extends Context { registerService(NOTIFICATION_SERVICE, new ServiceFetcher() { public Object createService(ContextImpl ctx) { final Context outerContext = ctx.getOuterContext(); // TODO: Why are we not just using the theme attribute // that defines the dialog theme? return new NotificationManager( new ContextThemeWrapper(outerContext, outerContext.getResources().selectSystemTheme(0, Resources.selectSystemTheme(0, outerContext.getApplicationInfo().targetSdkVersion, com.android.internal.R.array.system_theme_sdks, com.android.internal.R.array.system_theme_dialog_styles)), com.android.internal.R.style.Theme_Dialog, com.android.internal.R.style.Theme_Holo_Dialog, com.android.internal.R.style.Theme_DeviceDefault_Dialog, com.android.internal.R.style.Theme_DeviceDefault_Light_Dialog)), ctx.mMainThread.getHandler()); }}); Loading Loading @@ -731,7 +731,7 @@ class ContextImpl extends Context { @Override public Resources.Theme getTheme() { if (mTheme == null) { mThemeResource = mResources.selectDefaultTheme(mThemeResource, mThemeResource = Resources.selectDefaultTheme(mThemeResource, getOuterContext().getApplicationInfo().targetSdkVersion); mTheme = mResources.newTheme(); mTheme.applyStyle(mThemeResource, true); Loading core/java/android/content/res/Resources.java +23 −26 Original line number Diff line number Diff line Loading @@ -137,45 +137,42 @@ public class Resources { /** * Returns the most appropriate default theme for the specified target SDK version. * <ul> * <li>Below API 11: Gingerbread * <li>APIs 11 thru 14: Holo * <li>APIs 14 thru XX: Device default dark * <li>API XX and above: Device default light with dark action bar * </ul> * * @param curTheme The current theme, or 0 if not specified. * @param targetSdkVersion The target SDK version. * @return A theme resource identifier * @hide */ public int selectDefaultTheme(int curTheme, int targetSdkVersion) { public static int selectDefaultTheme(int curTheme, int targetSdkVersion) { return selectSystemTheme(curTheme, targetSdkVersion, com.android.internal.R.array.system_theme_sdks, com.android.internal.R.array.system_theme_styles); com.android.internal.R.style.Theme, com.android.internal.R.style.Theme_Holo, com.android.internal.R.style.Theme_DeviceDefault, com.android.internal.R.style.Theme_DeviceDefault_Light_DarkActionBar); } /** * Returns the most appropriate default theme for the specified target SDK version. * * @param curTheme The current theme, or 0 if not specified. * @param targetSdkVersion The target SDK version. * @param sdkArrayId Identifier for integer array resource containing * sorted minimum SDK versions. First entry must be 0. * @param themeArrayId Identifier for array resource containing the * default themes that map to SDK versions. * @return A theme resource identifier * @hide */ public int selectSystemTheme( int curTheme, int targetSdkVersion, int sdkArrayId, int themeArrayId) { /** @hide */ public static int selectSystemTheme(int curTheme, int targetSdkVersion, int orig, int holo, int dark, int deviceDefault) { if (curTheme != 0) { return curTheme; } final int[] targetSdks = getIntArray(sdkArrayId); final TypedArray defaultThemes = obtainTypedArray(themeArrayId); for (int i = targetSdks.length - 1; i > 0; i--) { if (targetSdkVersion >= targetSdks[i]) { return defaultThemes.getResourceId(i, 0); if (targetSdkVersion < Build.VERSION_CODES.HONEYCOMB) { return orig; } if (targetSdkVersion < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { return holo; } return defaultThemes.getResourceId(0, 0); if (targetSdkVersion < Build.VERSION_CODES.CUR_DEVELOPMENT) { return dark; } return deviceDefault; } /** Loading core/java/android/inputmethodservice/InputMethodService.java +7 −5 Original line number Diff line number Diff line Loading @@ -654,11 +654,13 @@ public class InputMethodService extends AbstractInputMethodService { return false; } @Override public void onCreate() { mTheme = getResources().selectSystemTheme(mTheme, getApplicationInfo().targetSdkVersion, com.android.internal.R.array.system_theme_sdks, com.android.internal.R.array.system_theme_ime_styles); @Override public void onCreate() { mTheme = Resources.selectSystemTheme(mTheme, getApplicationInfo().targetSdkVersion, android.R.style.Theme_InputMethod, android.R.style.Theme_Holo_InputMethod, android.R.style.Theme_DeviceDefault_InputMethod, android.R.style.Theme_DeviceDefault_InputMethod); super.setTheme(mTheme); super.onCreate(); mImm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); Loading core/java/android/view/ContextThemeWrapper.java +1 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ public class ContextThemeWrapper extends ContextWrapper { return mTheme; } mThemeResource = getResources().selectDefaultTheme(mThemeResource, mThemeResource = Resources.selectDefaultTheme(mThemeResource, getApplicationInfo().targetSdkVersion); initializeTheme(); Loading core/res/res/values/arrays.xml +0 −39 Original line number Diff line number Diff line Loading @@ -348,43 +348,4 @@ <item>中文 (繁體)</item> </string-array> <!-- Used by callers to Resources.selectSystemTheme(). Defines the minimum targetSdkVersion required for the theme style at a given index. NOTE: Must be sorted in ascending order. --> <integer-array name="system_theme_sdks"> <item>0</item> <item>11</item> <item>14</item> <item>21</item> </integer-array> <!-- Used by Resources.selectDefaultTheme(). Defines the default theme style for the targetSdkVersion at a given index (see system_theme_sdks). NOTE: Must match number of entries in system_theme_sdks. --> <array name="system_theme_styles"> <item>@style/Theme</item> <item>@style/Theme.Holo</item> <item>@style/Theme.DeviceDefault</item> <item>@style/Theme.DeviceDefault.Light.DarkActionBar</item> </array> <!-- Used by ContextImpl for notifications. Defines the default dialog theme style for the targetSdkVersion at a given index (see system_theme_sdks). NOTE: Must match number of entries in system_theme_sdks. --> <array name="system_theme_dialog_styles"> <item>@style/Theme</item> <item>@style/Theme.Holo.Dialog</item> <item>@style/Theme.DeviceDefault.Dialog</item> <item>@style/Theme.DeviceDefault.Light.Dialog</item> </array> <!-- Used by InputMethodService.onCreate(). Defines the default IME theme style for the targetSdkVersion at a given index (see system_theme_sdks). NOTE: Must match number of entries in system_theme_sdks. --> <array name="system_theme_ime_styles"> <item>@style/Theme.InputMethod</item> <item>@style/Theme.Holo.InputMethod</item> <item>@style/Theme.DeviceDefault.InputMethod</item> <item>@style/Theme.DeviceDefault.InputMethod</item> </array> </resources> Loading
core/java/android/app/ContextImpl.java +6 −6 Original line number Diff line number Diff line Loading @@ -473,14 +473,14 @@ class ContextImpl extends Context { registerService(NOTIFICATION_SERVICE, new ServiceFetcher() { public Object createService(ContextImpl ctx) { final Context outerContext = ctx.getOuterContext(); // TODO: Why are we not just using the theme attribute // that defines the dialog theme? return new NotificationManager( new ContextThemeWrapper(outerContext, outerContext.getResources().selectSystemTheme(0, Resources.selectSystemTheme(0, outerContext.getApplicationInfo().targetSdkVersion, com.android.internal.R.array.system_theme_sdks, com.android.internal.R.array.system_theme_dialog_styles)), com.android.internal.R.style.Theme_Dialog, com.android.internal.R.style.Theme_Holo_Dialog, com.android.internal.R.style.Theme_DeviceDefault_Dialog, com.android.internal.R.style.Theme_DeviceDefault_Light_Dialog)), ctx.mMainThread.getHandler()); }}); Loading Loading @@ -731,7 +731,7 @@ class ContextImpl extends Context { @Override public Resources.Theme getTheme() { if (mTheme == null) { mThemeResource = mResources.selectDefaultTheme(mThemeResource, mThemeResource = Resources.selectDefaultTheme(mThemeResource, getOuterContext().getApplicationInfo().targetSdkVersion); mTheme = mResources.newTheme(); mTheme.applyStyle(mThemeResource, true); Loading
core/java/android/content/res/Resources.java +23 −26 Original line number Diff line number Diff line Loading @@ -137,45 +137,42 @@ public class Resources { /** * Returns the most appropriate default theme for the specified target SDK version. * <ul> * <li>Below API 11: Gingerbread * <li>APIs 11 thru 14: Holo * <li>APIs 14 thru XX: Device default dark * <li>API XX and above: Device default light with dark action bar * </ul> * * @param curTheme The current theme, or 0 if not specified. * @param targetSdkVersion The target SDK version. * @return A theme resource identifier * @hide */ public int selectDefaultTheme(int curTheme, int targetSdkVersion) { public static int selectDefaultTheme(int curTheme, int targetSdkVersion) { return selectSystemTheme(curTheme, targetSdkVersion, com.android.internal.R.array.system_theme_sdks, com.android.internal.R.array.system_theme_styles); com.android.internal.R.style.Theme, com.android.internal.R.style.Theme_Holo, com.android.internal.R.style.Theme_DeviceDefault, com.android.internal.R.style.Theme_DeviceDefault_Light_DarkActionBar); } /** * Returns the most appropriate default theme for the specified target SDK version. * * @param curTheme The current theme, or 0 if not specified. * @param targetSdkVersion The target SDK version. * @param sdkArrayId Identifier for integer array resource containing * sorted minimum SDK versions. First entry must be 0. * @param themeArrayId Identifier for array resource containing the * default themes that map to SDK versions. * @return A theme resource identifier * @hide */ public int selectSystemTheme( int curTheme, int targetSdkVersion, int sdkArrayId, int themeArrayId) { /** @hide */ public static int selectSystemTheme(int curTheme, int targetSdkVersion, int orig, int holo, int dark, int deviceDefault) { if (curTheme != 0) { return curTheme; } final int[] targetSdks = getIntArray(sdkArrayId); final TypedArray defaultThemes = obtainTypedArray(themeArrayId); for (int i = targetSdks.length - 1; i > 0; i--) { if (targetSdkVersion >= targetSdks[i]) { return defaultThemes.getResourceId(i, 0); if (targetSdkVersion < Build.VERSION_CODES.HONEYCOMB) { return orig; } if (targetSdkVersion < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { return holo; } return defaultThemes.getResourceId(0, 0); if (targetSdkVersion < Build.VERSION_CODES.CUR_DEVELOPMENT) { return dark; } return deviceDefault; } /** Loading
core/java/android/inputmethodservice/InputMethodService.java +7 −5 Original line number Diff line number Diff line Loading @@ -654,11 +654,13 @@ public class InputMethodService extends AbstractInputMethodService { return false; } @Override public void onCreate() { mTheme = getResources().selectSystemTheme(mTheme, getApplicationInfo().targetSdkVersion, com.android.internal.R.array.system_theme_sdks, com.android.internal.R.array.system_theme_ime_styles); @Override public void onCreate() { mTheme = Resources.selectSystemTheme(mTheme, getApplicationInfo().targetSdkVersion, android.R.style.Theme_InputMethod, android.R.style.Theme_Holo_InputMethod, android.R.style.Theme_DeviceDefault_InputMethod, android.R.style.Theme_DeviceDefault_InputMethod); super.setTheme(mTheme); super.onCreate(); mImm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); Loading
core/java/android/view/ContextThemeWrapper.java +1 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ public class ContextThemeWrapper extends ContextWrapper { return mTheme; } mThemeResource = getResources().selectDefaultTheme(mThemeResource, mThemeResource = Resources.selectDefaultTheme(mThemeResource, getApplicationInfo().targetSdkVersion); initializeTheme(); Loading
core/res/res/values/arrays.xml +0 −39 Original line number Diff line number Diff line Loading @@ -348,43 +348,4 @@ <item>中文 (繁體)</item> </string-array> <!-- Used by callers to Resources.selectSystemTheme(). Defines the minimum targetSdkVersion required for the theme style at a given index. NOTE: Must be sorted in ascending order. --> <integer-array name="system_theme_sdks"> <item>0</item> <item>11</item> <item>14</item> <item>21</item> </integer-array> <!-- Used by Resources.selectDefaultTheme(). Defines the default theme style for the targetSdkVersion at a given index (see system_theme_sdks). NOTE: Must match number of entries in system_theme_sdks. --> <array name="system_theme_styles"> <item>@style/Theme</item> <item>@style/Theme.Holo</item> <item>@style/Theme.DeviceDefault</item> <item>@style/Theme.DeviceDefault.Light.DarkActionBar</item> </array> <!-- Used by ContextImpl for notifications. Defines the default dialog theme style for the targetSdkVersion at a given index (see system_theme_sdks). NOTE: Must match number of entries in system_theme_sdks. --> <array name="system_theme_dialog_styles"> <item>@style/Theme</item> <item>@style/Theme.Holo.Dialog</item> <item>@style/Theme.DeviceDefault.Dialog</item> <item>@style/Theme.DeviceDefault.Light.Dialog</item> </array> <!-- Used by InputMethodService.onCreate(). Defines the default IME theme style for the targetSdkVersion at a given index (see system_theme_sdks). NOTE: Must match number of entries in system_theme_sdks. --> <array name="system_theme_ime_styles"> <item>@style/Theme.InputMethod</item> <item>@style/Theme.Holo.InputMethod</item> <item>@style/Theme.DeviceDefault.InputMethod</item> <item>@style/Theme.DeviceDefault.InputMethod</item> </array> </resources>