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.
+ *
+ * - Below API 11: Gingerbread
+ *
- APIs 11 thru 14: Holo
+ *
- APIs 14 thru XX: Device default dark
+ *
- API XX and above: Device default light with dark action bar
+ *
*
* @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 @@
-
-
-
-