diff options
author | Dianne Hackborn <hackbod@google.com> | 2011-05-19 21:44:52 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2011-05-19 21:44:52 -0700 |
commit | 161e67ff3ba26408eea09221734ad2e29a1eed11 (patch) | |
tree | 6e98ff836fb5f134e01a7e9ef420ec35a78ad5d2 /core/java/android | |
parent | 9e735541beed238d3b99d4bd284af1fc953c3775 (diff) | |
parent | 06a8ceacb0dc2713cb0bb2c93d2a750f2a58db68 (diff) | |
download | frameworks_base-161e67ff3ba26408eea09221734ad2e29a1eed11.zip frameworks_base-161e67ff3ba26408eea09221734ad2e29a1eed11.tar.gz frameworks_base-161e67ff3ba26408eea09221734ad2e29a1eed11.tar.bz2 |
resolved conflicts for merge of 06a8ceac to master
Change-Id: Id51574c825affddfac14ad7214c5496d6a3d6e69
Diffstat (limited to 'core/java/android')
-rw-r--r-- | core/java/android/content/pm/ActivityInfo.java | 7 | ||||
-rw-r--r-- | core/java/android/content/pm/PackageParser.java | 7 | ||||
-rw-r--r-- | core/java/android/content/res/AssetManager.java | 4 | ||||
-rw-r--r-- | core/java/android/content/res/Configuration.java | 124 | ||||
-rwxr-xr-x | core/java/android/content/res/Resources.java | 1 | ||||
-rw-r--r-- | core/java/android/view/WindowManagerPolicy.java | 30 |
6 files changed, 116 insertions, 57 deletions
diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java index 64c437d..4285388 100644 --- a/core/java/android/content/pm/ActivityInfo.java +++ b/core/java/android/content/pm/ActivityInfo.java @@ -340,6 +340,12 @@ public class ActivityInfo extends ComponentInfo public static final int CONFIG_SCREEN_SIZE = 0x0400; /** * Bit in {@link #configChanges} that indicates that the activity + * can itself handle the smallest screen size. Set from the + * {@link android.R.attr#configChanges} attribute. + */ + public static final int CONFIG_SMALLEST_SCREEN_SIZE = 0x0800; + /** + * Bit in {@link #configChanges} that indicates that the activity * can itself handle changes to the font scaling factor. Set from the * {@link android.R.attr#configChanges} attribute. This is * not a core resource configutation, but a higher-level value, so its @@ -364,6 +370,7 @@ public class ActivityInfo extends ComponentInfo 0x0800, // SCREEN LAYOUT 0x1000, // UI MODE 0x0200, // SCREEN SIZE + 0x2000, // SMALLEST SCREEN SIZE }; /** @hide * Convert Java change bits to native. diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 18120ac..9ff324b 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -396,7 +396,7 @@ public class PackageParser { int cookie = assmgr.addAssetPath(mArchiveSourcePath); if (cookie != 0) { res = new Resources(assmgr, metrics, null); - assmgr.setConfiguration(0, 0, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + assmgr.setConfiguration(0, 0, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Build.VERSION.RESOURCES_SDK_INT); parser = assmgr.openXmlResourceParser(cookie, "AndroidManifest.xml"); assetError = false; @@ -596,7 +596,7 @@ public class PackageParser { AssetManager assmgr = null; try { assmgr = new AssetManager(); - assmgr.setConfiguration(0, 0, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + assmgr.setConfiguration(0, 0, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Build.VERSION.RESOURCES_SDK_INT); int cookie = assmgr.addAssetPath(packageFilePath); parser = assmgr.openXmlResourceParser(cookie, "AndroidManifest.xml"); @@ -1943,7 +1943,8 @@ public class PackageParser { 0); if (owner.applicationInfo.targetSdkVersion < android.os.Build.VERSION_CODES.HONEYCOMB_MR2) { - a.info.configChanges |= ActivityInfo.CONFIG_SCREEN_SIZE; + a.info.configChanges |= ActivityInfo.CONFIG_SCREEN_SIZE + | ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE; } a.info.softInputMode = sa.getInt( com.android.internal.R.styleable.AndroidManifestActivity_windowSoftInputMode, diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java index be67e96..931cb18 100644 --- a/core/java/android/content/res/AssetManager.java +++ b/core/java/android/content/res/AssetManager.java @@ -652,8 +652,8 @@ public final class AssetManager { public native final void setConfiguration(int mcc, int mnc, String locale, int orientation, int touchscreen, int density, int keyboard, int keyboardHidden, int navigation, int screenWidth, int screenHeight, - int screenWidthDp, int screenHeightDp, int screenLayout, int uiMode, - int majorVersion); + int smallestScreenWidthDp, int screenWidthDp, int screenHeightDp, + int screenLayout, int uiMode, int majorVersion); /** * Retrieve the resource identifier for the given resource name. diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java index 0de08f2..12ec258 100644 --- a/core/java/android/content/res/Configuration.java +++ b/core/java/android/content/res/Configuration.java @@ -259,6 +259,15 @@ public final class Configuration implements Parcelable, Comparable<Configuration */ public int screenHeightDp; + public static final int SMALLEST_SCREEN_WIDTH_DP_UNDEFINED = 0; + + /** + * The smallest screen size an application will see in normal operation. + * This is the smallest value of both screenWidthDp and screenHeightDp + * in both portrait and landscape. + */ + public int smallestScreenWidthDp; + /** * @hide Internal book-keeping. */ @@ -298,6 +307,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration uiMode = o.uiMode; screenWidthDp = o.screenWidthDp; screenHeightDp = o.screenHeightDp; + smallestScreenWidthDp = o.smallestScreenWidthDp; seq = o.seq; } @@ -315,6 +325,56 @@ public final class Configuration implements Parcelable, Comparable<Configuration } else { sb.append(" (no locale)"); } + if (smallestScreenWidthDp != SMALLEST_SCREEN_WIDTH_DP_UNDEFINED) { + sb.append(" sw"); sb.append(smallestScreenWidthDp); sb.append("dp"); + } else { + sb.append("?swdp"); + } + if (screenWidthDp != SCREEN_WIDTH_DP_UNDEFINED) { + sb.append(" w"); sb.append(screenWidthDp); sb.append("dp"); + } else { + sb.append("?wdp"); + } + if (screenHeightDp != SCREEN_HEIGHT_DP_UNDEFINED) { + sb.append(" h"); sb.append(screenHeightDp); sb.append("dp"); + } else { + sb.append("?hdp"); + } + switch ((screenLayout&SCREENLAYOUT_SIZE_MASK)) { + case SCREENLAYOUT_SIZE_UNDEFINED: sb.append(" ?lsize"); break; + case SCREENLAYOUT_SIZE_SMALL: sb.append(" smll"); break; + case SCREENLAYOUT_SIZE_NORMAL: sb.append(" nrml"); break; + case SCREENLAYOUT_SIZE_LARGE: sb.append(" lrg"); break; + case SCREENLAYOUT_SIZE_XLARGE: sb.append(" xlrg"); break; + default: sb.append(" layoutSize="); + sb.append(screenLayout&SCREENLAYOUT_SIZE_MASK); break; + } + switch ((screenLayout&SCREENLAYOUT_LONG_MASK)) { + case SCREENLAYOUT_LONG_UNDEFINED: sb.append(" ?long"); break; + case SCREENLAYOUT_LONG_NO: /* not-long is not interesting to print */ break; + case SCREENLAYOUT_LONG_YES: sb.append(" long"); break; + default: sb.append(" layoutLong="); + sb.append(screenLayout&SCREENLAYOUT_LONG_MASK); break; + } + switch (orientation) { + case ORIENTATION_UNDEFINED: sb.append(" ?orien"); break; + case ORIENTATION_LANDSCAPE: sb.append(" land"); break; + case ORIENTATION_PORTRAIT: sb.append(" port"); break; + default: sb.append(" orien="); sb.append(orientation); break; + } + switch ((uiMode&UI_MODE_TYPE_MASK)) { + case UI_MODE_TYPE_UNDEFINED: sb.append(" ?uimode"); break; + case UI_MODE_TYPE_NORMAL: /* normal is not interesting to print */ break; + case UI_MODE_TYPE_DESK: sb.append(" desk"); break; + case UI_MODE_TYPE_CAR: sb.append(" car"); break; + default: sb.append(" uimode="); sb.append(uiMode&UI_MODE_TYPE_MASK); break; + } + switch ((uiMode&UI_MODE_NIGHT_MASK)) { + case UI_MODE_NIGHT_UNDEFINED: sb.append(" ?night"); break; + case UI_MODE_NIGHT_NO: /* not-night is not interesting to print */ break; + case UI_MODE_NIGHT_YES: sb.append(" night"); break; + default: sb.append(" night="); sb.append(uiMode&UI_MODE_NIGHT_MASK); break; + } switch (touchscreen) { case TOUCHSCREEN_UNDEFINED: sb.append(" ?touch"); break; case TOUCHSCREEN_NOTOUCH: sb.append(" -touch"); break; @@ -356,51 +416,6 @@ public final class Configuration implements Parcelable, Comparable<Configuration case NAVIGATIONHIDDEN_YES: sb.append("/h"); break; default: sb.append("/"); sb.append(navigationHidden); break; } - switch (orientation) { - case ORIENTATION_UNDEFINED: sb.append(" ?orien"); break; - case ORIENTATION_LANDSCAPE: sb.append(" land"); break; - case ORIENTATION_PORTRAIT: sb.append(" port"); break; - default: sb.append(" orien="); sb.append(orientation); break; - } - switch ((screenLayout&SCREENLAYOUT_SIZE_MASK)) { - case SCREENLAYOUT_SIZE_UNDEFINED: sb.append(" ?lsize"); break; - case SCREENLAYOUT_SIZE_SMALL: sb.append(" smll"); break; - case SCREENLAYOUT_SIZE_NORMAL: sb.append(" nrml"); break; - case SCREENLAYOUT_SIZE_LARGE: sb.append(" lrg"); break; - case SCREENLAYOUT_SIZE_XLARGE: sb.append(" xlrg"); break; - default: sb.append(" layoutSize="); - sb.append(screenLayout&SCREENLAYOUT_SIZE_MASK); break; - } - switch ((screenLayout&SCREENLAYOUT_LONG_MASK)) { - case SCREENLAYOUT_LONG_UNDEFINED: sb.append(" ?long"); break; - case SCREENLAYOUT_LONG_NO: /* not-long is not interesting to print */ break; - case SCREENLAYOUT_LONG_YES: sb.append(" long"); break; - default: sb.append(" layoutLong="); - sb.append(screenLayout&SCREENLAYOUT_LONG_MASK); break; - } - switch ((uiMode&UI_MODE_TYPE_MASK)) { - case UI_MODE_TYPE_UNDEFINED: sb.append(" ?uimode"); break; - case UI_MODE_TYPE_NORMAL: /* normal is not interesting to print */ break; - case UI_MODE_TYPE_DESK: sb.append(" desk"); break; - case UI_MODE_TYPE_CAR: sb.append(" car"); break; - default: sb.append(" uimode="); sb.append(uiMode&UI_MODE_TYPE_MASK); break; - } - switch ((uiMode&UI_MODE_NIGHT_MASK)) { - case UI_MODE_NIGHT_UNDEFINED: sb.append(" ?night"); break; - case UI_MODE_NIGHT_NO: /* not-night is not interesting to print */ break; - case UI_MODE_NIGHT_YES: sb.append(" night"); break; - default: sb.append(" night="); sb.append(uiMode&UI_MODE_NIGHT_MASK); break; - } - if (screenWidthDp != SCREEN_WIDTH_DP_UNDEFINED) { - sb.append(" w"); sb.append(screenWidthDp); sb.append("dp"); - } else { - sb.append("?wdp"); - } - if (screenHeightDp != SCREEN_HEIGHT_DP_UNDEFINED) { - sb.append(" h"); sb.append(screenHeightDp); sb.append("dp"); - } else { - sb.append("?hdp"); - } if (seq != 0) { sb.append(" s."); sb.append(seq); @@ -428,6 +443,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration uiMode = UI_MODE_TYPE_UNDEFINED; screenWidthDp = SCREEN_WIDTH_DP_UNDEFINED; screenHeightDp = SCREEN_HEIGHT_DP_UNDEFINED; + smallestScreenWidthDp = SMALLEST_SCREEN_WIDTH_DP_UNDEFINED; seq = 0; } @@ -531,6 +547,11 @@ public final class Configuration implements Parcelable, Comparable<Configuration changed |= ActivityInfo.CONFIG_SCREEN_SIZE; screenHeightDp = delta.screenHeightDp; } + if (delta.smallestScreenWidthDp != SMALLEST_SCREEN_WIDTH_DP_UNDEFINED + && smallestScreenWidthDp != delta.smallestScreenWidthDp) { + changed |= ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE; + smallestScreenWidthDp = delta.smallestScreenWidthDp; + } if (delta.seq != 0) { seq = delta.seq; @@ -564,7 +585,9 @@ public final class Configuration implements Parcelable, Comparable<Configuration * {@link android.content.pm.ActivityInfo#CONFIG_SCREEN_LAYOUT * PackageManager.ActivityInfo.CONFIG_SCREEN_LAYOUT}, or * {@link android.content.pm.ActivityInfo#CONFIG_SCREEN_SIZE - * PackageManager.ActivityInfo.CONFIG_SCREEN_SIZE}. + * PackageManager.ActivityInfo.CONFIG_SCREEN_SIZE}, or + * {@link android.content.pm.ActivityInfo#CONFIG_SMALLEST_SCREEN_SIZE + * PackageManager.ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE}. */ public int diff(Configuration delta) { int changed = 0; @@ -625,6 +648,10 @@ public final class Configuration implements Parcelable, Comparable<Configuration && screenHeightDp != delta.screenHeightDp) { changed |= ActivityInfo.CONFIG_SCREEN_SIZE; } + if (delta.smallestScreenWidthDp != SMALLEST_SCREEN_WIDTH_DP_UNDEFINED + && smallestScreenWidthDp != delta.smallestScreenWidthDp) { + changed |= ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE; + } return changed; } @@ -708,6 +735,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration dest.writeInt(uiMode); dest.writeInt(screenWidthDp); dest.writeInt(screenHeightDp); + dest.writeInt(smallestScreenWidthDp); dest.writeInt(seq); } @@ -731,6 +759,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration uiMode = source.readInt(); screenWidthDp = source.readInt(); screenHeightDp = source.readInt(); + smallestScreenWidthDp = source.readInt(); seq = source.readInt(); } @@ -795,6 +824,8 @@ public final class Configuration implements Parcelable, Comparable<Configuration n = this.screenWidthDp - that.screenWidthDp; if (n != 0) return n; n = this.screenHeightDp - that.screenHeightDp; + if (n != 0) return n; + n = this.smallestScreenWidthDp - that.smallestScreenWidthDp; //if (n != 0) return n; return n; } @@ -830,6 +861,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration result = 31 * result + uiMode; result = 31 * result + screenWidthDp; result = 31 * result + screenHeightDp; + result = 31 * result + smallestScreenWidthDp; return result; } } diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java index 540f704..a072e94 100755 --- a/core/java/android/content/res/Resources.java +++ b/core/java/android/content/res/Resources.java @@ -1458,6 +1458,7 @@ public class Resources { mConfiguration.touchscreen, (int)(mMetrics.density*160), mConfiguration.keyboard, keyboardHidden, mConfiguration.navigation, width, height, + mConfiguration.smallestScreenWidthDp, mConfiguration.screenWidthDp, mConfiguration.screenHeightDp, mConfiguration.screenLayout, mConfiguration.uiMode, Build.VERSION.RESOURCES_SDK_INT); diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java index 5a418f3..4e52e40 100644 --- a/core/java/android/view/WindowManagerPolicy.java +++ b/core/java/android/view/WindowManagerPolicy.java @@ -466,16 +466,34 @@ public interface WindowManagerPolicy { public int getMaxWallpaperLayer(); /** - * Return the display width available after excluding the window - * decor. + * Return the display width available after excluding any screen + * decorations that can never be removed. That is, system bar or + * button bar. */ - public int getNonDecorDisplayWidth(int fullWidth); + public int getNonDecorDisplayWidth(int rotation, int fullWidth); /** - * Return the display height available after excluding the screen - * decor. + * Return the display height available after excluding any screen + * decorations that can never be removed. That is, system bar or + * button bar. */ - public int getNonDecorDisplayHeight(int fullHeight); + public int getNonDecorDisplayHeight(int rotation, int fullHeight); + + /** + * Return the available screen width that we should report for the + * configuration. This must be no larger than + * {@link #getNonDecorDisplayWidth(int, int)}; it may be smaller than + * that to account for more transient decoration like a status bar. + */ + public int getConfigDisplayWidth(int rotation, int fullWidth); + + /** + * Return the available screen height that we should report for the + * configuration. This must be no larger than + * {@link #getNonDecorDisplayHeight(int, int)}; it may be smaller than + * that to account for more transient decoration like a status bar. + */ + public int getConfigDisplayHeight(int rotation, int fullHeight); /** * Return whether the given window should forcibly hide everything |