diff options
author | David Morrissey <davemorrissey@gmail.com> | 2014-05-30 12:38:10 +0100 |
---|---|---|
committer | David Morrissey <davemorrissey@gmail.com> | 2014-05-30 12:38:10 +0100 |
commit | ae862190026dc7800f7abac31c5c6436866cbbc3 (patch) | |
tree | 3553b21fb16587a9893def4138103d0d51a77c5e /sample/src | |
parent | 87ac81516aaa50f47ef540aeffa6eeca1a39a1e0 (diff) | |
download | subsampling-scale-image-view-ae862190026dc7800f7abac31c5c6436866cbbc3.tar.gz |
Better and simplified support for state restore on rotate
Diffstat (limited to 'sample/src')
-rw-r--r-- | sample/src/com/davemorrissey/labs/subscaleview/sample/PageFragment.java | 41 |
1 files changed, 14 insertions, 27 deletions
diff --git a/sample/src/com/davemorrissey/labs/subscaleview/sample/PageFragment.java b/sample/src/com/davemorrissey/labs/subscaleview/sample/PageFragment.java index 7d9cf97..9a6172c 100644 --- a/sample/src/com/davemorrissey/labs/subscaleview/sample/PageFragment.java +++ b/sample/src/com/davemorrissey/labs/subscaleview/sample/PageFragment.java @@ -16,7 +16,6 @@ limitations under the License. package com.davemorrissey.labs.subscaleview.sample; -import android.graphics.PointF; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; @@ -25,16 +24,14 @@ import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.view.ViewGroup; import android.widget.Toast; +import com.davemorrissey.labs.subscaleview.ImageViewState; import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; import com.davemorrissey.labs.subscaleview.sample.R.id; public class PageFragment extends Fragment implements OnClickListener, OnLongClickListener { - private static final String STATE_SCALE = "state-scale"; - private static final String STATE_CENTER_X = "state-center-x"; - private static final String STATE_CENTER_Y = "state-center-y"; - private static final String STATE_ORIENTATION = "state-orientation"; - private static final String STATE_ASSET = "state-asset"; + private static final String BUNDLE_STATE = "state"; + private static final String BUNDLE_ASSET = "asset"; private int orientation = 0; @@ -51,29 +48,23 @@ public class PageFragment extends Fragment implements OnClickListener, OnLongCli public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.page, container, false); + ImageViewState imageViewState = null; if (savedInstanceState != null) { - if (asset == null && savedInstanceState.containsKey(STATE_ASSET)) { - asset = savedInstanceState.getString(STATE_ASSET); + if (asset == null && savedInstanceState.containsKey(BUNDLE_ASSET)) { + asset = savedInstanceState.getString(BUNDLE_ASSET); } - if (savedInstanceState.containsKey(STATE_ORIENTATION)) { - orientation = savedInstanceState.getInt(STATE_ORIENTATION); + if (savedInstanceState.containsKey(BUNDLE_STATE)) { + imageViewState = (ImageViewState)savedInstanceState.getSerializable(BUNDLE_STATE); + orientation = imageViewState.getOrientation(); } } rootView.findViewById(id.rotate).setOnClickListener(this); if (asset != null) { SubsamplingScaleImageView imageView = (SubsamplingScaleImageView)rootView.findViewById(id.imageView); - imageView.setOrientation(orientation); - imageView.setImageAsset(asset); + imageView.setImageAsset(asset, imageViewState); imageView.setOnClickListener(this); imageView.setOnLongClickListener(this); - - if (savedInstanceState != null && - savedInstanceState.containsKey(STATE_SCALE) && - savedInstanceState.containsKey(STATE_CENTER_X) && - savedInstanceState.containsKey(STATE_CENTER_Y)) { - imageView.setScaleAndCenter(savedInstanceState.getFloat(STATE_SCALE), new PointF(savedInstanceState.getFloat(STATE_CENTER_X), savedInstanceState.getFloat(STATE_CENTER_Y))); - } } return rootView; @@ -105,17 +96,13 @@ public class PageFragment extends Fragment implements OnClickListener, OnLongCli super.onSaveInstanceState(outState); View rootView = getView(); if (rootView != null) { + outState.putString(BUNDLE_ASSET, asset); SubsamplingScaleImageView imageView = (SubsamplingScaleImageView)rootView.findViewById(id.imageView); - outState.putFloat(STATE_SCALE, imageView.getScale()); - PointF center = imageView.getCenter(); - if (center != null) { - outState.putFloat(STATE_CENTER_X, center.x); - outState.putFloat(STATE_CENTER_Y, center.y); + ImageViewState state = imageView.getState(); + if (state != null) { + outState.putSerializable(BUNDLE_STATE, imageView.getState()); } - outState.putString(STATE_ASSET, asset); - outState.putInt(STATE_ORIENTATION, orientation); } } - } |