diff options
author | Dianne Hackborn <hackbod@google.com> | 2012-08-14 16:45:30 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2012-08-14 16:51:38 -0700 |
commit | 756220bd1912535840388a6743830d2e59ad4964 (patch) | |
tree | ee97c666d4bb1f015fd3e89463af09c712ce47e4 /tests/ActivityTests | |
parent | 863b19bc8fcfa436011781b67a237fcce3cb703a (diff) | |
download | frameworks_base-756220bd1912535840388a6743830d2e59ad4964.zip frameworks_base-756220bd1912535840388a6743830d2e59ad4964.tar.gz frameworks_base-756220bd1912535840388a6743830d2e59ad4964.tar.bz2 |
Add API to create new contexts with custom configurations.
This allows you to, say, make a Context whose configuration
is set to a different density than the actual density of the device.
The main API is Context.createConfigurationContext(). There is
also a new API on ContextThemeWrapper that allows you to apply
an override context before its resources are retrieved, which
addresses some feature requests from developers to be able to
customize the context their app is running in.
Change-Id: I88364986660088521e24b567e2fda22fb7042819
Diffstat (limited to 'tests/ActivityTests')
-rw-r--r-- | tests/ActivityTests/src/com/google/android/test/activity/ActivityTestMain.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/ActivityTests/src/com/google/android/test/activity/ActivityTestMain.java b/tests/ActivityTests/src/com/google/android/test/activity/ActivityTestMain.java index 0ec1f13..0577dbb 100644 --- a/tests/ActivityTests/src/com/google/android/test/activity/ActivityTestMain.java +++ b/tests/ActivityTests/src/com/google/android/test/activity/ActivityTestMain.java @@ -40,12 +40,16 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.content.Context; +import android.content.res.Configuration; import android.util.Log; public class ActivityTestMain extends Activity { static final String TAG = "ActivityTest"; + static final String KEY_CONFIGURATION = "configuration"; + ActivityManager mAm; + Configuration mOverrideConfig; class BroadcastResultReceiver extends BroadcastReceiver { @Override @@ -111,6 +115,12 @@ public class ActivityTestMain extends Activity { super.onCreate(savedInstanceState); mAm = (ActivityManager)getSystemService(ACTIVITY_SERVICE); + if (savedInstanceState != null) { + mOverrideConfig = savedInstanceState.getParcelable(KEY_CONFIGURATION); + if (mOverrideConfig != null) { + applyOverrideConfiguration(mOverrideConfig); + } + } } @Override @@ -182,6 +192,21 @@ public class ActivityTestMain extends Activity { return true; } }); + menu.add("Density!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { + @Override public boolean onMenuItemClick(MenuItem item) { + if (mOverrideConfig == null) { + mOverrideConfig = new Configuration(); + } + if (mOverrideConfig.densityDpi == Configuration.DENSITY_DPI_UNDEFINED) { + mOverrideConfig.densityDpi = (getApplicationContext().getResources() + .getConfiguration().densityDpi*2)/3; + } else { + mOverrideConfig.densityDpi = Configuration.DENSITY_DPI_UNDEFINED; + } + recreate(); + return true; + } + }); return true; } @@ -191,6 +216,14 @@ public class ActivityTestMain extends Activity { buildUi(); } + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + if (mOverrideConfig != null) { + outState.putParcelable(KEY_CONFIGURATION, mOverrideConfig); + } + } + private View scrollWrap(View view) { ScrollView scroller = new ScrollView(this); scroller.addView(view, new ScrollView.LayoutParams(ScrollView.LayoutParams.MATCH_PARENT, |