diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index a4b2651862614..fe532bf1c6aca 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -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()); }}); @@ -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); diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java index 133177711092a..499de17162399 100644 --- a/core/java/android/content/res/Resources.java +++ b/core/java/android/content/res/Resources.java @@ -137,45 +137,42 @@ public class Resources { /** * 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. * @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; } - - return defaultThemes.getResourceId(0, 0); + if (targetSdkVersion < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + return holo; + } + if (targetSdkVersion < Build.VERSION_CODES.CUR_DEVELOPMENT) { + return dark; + } + return deviceDefault; } /** diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index 4160633a2e5f2..f6438b444cb5a 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -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); diff --git a/core/java/android/view/ContextThemeWrapper.java b/core/java/android/view/ContextThemeWrapper.java index ba1c4b6632696..0afbde9ee14f6 100644 --- a/core/java/android/view/ContextThemeWrapper.java +++ b/core/java/android/view/ContextThemeWrapper.java @@ -96,7 +96,7 @@ public class ContextThemeWrapper extends ContextWrapper { return mTheme; } - mThemeResource = getResources().selectDefaultTheme(mThemeResource, + mThemeResource = Resources.selectDefaultTheme(mThemeResource, getApplicationInfo().targetSdkVersion); initializeTheme(); diff --git a/core/res/res/values/arrays.xml b/core/res/res/values/arrays.xml index 305ba28eaf727..f01f10e48ccf8 100644 --- a/core/res/res/values/arrays.xml +++ b/core/res/res/values/arrays.xml @@ -348,43 +348,4 @@ 中文 (繁體) - - - 0 - 11 - 14 - 21 - - - - - @style/Theme - @style/Theme.Holo - @style/Theme.DeviceDefault - @style/Theme.DeviceDefault.Light.DarkActionBar - - - - - @style/Theme - @style/Theme.Holo.Dialog - @style/Theme.DeviceDefault.Dialog - @style/Theme.DeviceDefault.Light.Dialog - - - - - @style/Theme.InputMethod - @style/Theme.Holo.InputMethod - @style/Theme.DeviceDefault.InputMethod - @style/Theme.DeviceDefault.InputMethod - diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 6bcbbcea79bab..a8a4b513d7301 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1864,9 +1864,5 @@ - - - -