summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2012-10-14 21:53:48 +0400
committerAndrew Dolgov <[email protected]>2012-10-14 21:53:48 +0400
commit1c6c99d8bd05c2a94e39b49d2f6aea0dac99b344 (patch)
tree1088487046e62baaa387b877077309f27eb2388f /src
parent0b7b5759df3e71baf31993d83116533fc61874bc (diff)
lower memory usage
Diffstat (limited to 'src')
-rw-r--r--src/org/fox/ttcomics/ComicFragment.java25
-rw-r--r--src/org/fox/ttcomics/ComicPager.java7
2 files changed, 17 insertions, 15 deletions
diff --git a/src/org/fox/ttcomics/ComicFragment.java b/src/org/fox/ttcomics/ComicFragment.java
index 824de4c..420fa45 100644
--- a/src/org/fox/ttcomics/ComicFragment.java
+++ b/src/org/fox/ttcomics/ComicFragment.java
@@ -21,30 +21,34 @@ public class ComicFragment extends Fragment {
private final String TAG = this.getClass().getSimpleName();
private SharedPreferences m_prefs;
- private Bitmap m_comic;
private int m_page;
public ComicFragment() {
super();
}
- public ComicFragment(ComicArchive archive, int page) {
+ public ComicFragment(int page) {
super();
+ m_page = page;
+ }
+
+ public Bitmap loadImage(ComicArchive archive, int page) {
try {
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(archive.getItem(page), null, options);
- options.inSampleSize = CommonActivity.calculateInSampleSize(options, 512, 512);
+ options.inSampleSize = CommonActivity.calculateInSampleSize(options, 512, 512);
options.inJustDecodeBounds = false;
- m_comic = BitmapFactory.decodeStream(archive.getItem(page), null, options);
- } catch (OutOfMemoryError e) {
+ return BitmapFactory.decodeStream(archive.getItem(page), null, options);
+ } catch (OutOfMemoryError e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
- m_page = page;
+
+ return null;
}
@Override
@@ -55,12 +59,13 @@ public class ComicFragment extends Fragment {
TouchImageView image = (TouchImageView) view.findViewById(R.id.comic_image);
if (savedInstanceState != null) {
- m_comic = savedInstanceState.getParcelable("comic");
m_page = savedInstanceState.getInt("page");
}
- if (m_comic != null) {
- image.setImageBitmap(m_comic);
+ ComicPager pager = (ComicPager) getActivity().getSupportFragmentManager().findFragmentByTag(CommonActivity.FRAG_COMICS_PAGER);
+
+ if (pager != null) {
+ image.setImageBitmap(loadImage(pager.getArchive(), m_page));
image.setMaxZoom(4f);
image.setOnScaleChangedListener(new TouchImageView.OnScaleChangedListener() {
@@ -94,8 +99,6 @@ public class ComicFragment extends Fragment {
@Override
public void onSaveInstanceState(Bundle out) {
super.onSaveInstanceState(out);
-
- out.putParcelable("comic", m_comic);
out.putInt("page", m_page);
}
diff --git a/src/org/fox/ttcomics/ComicPager.java b/src/org/fox/ttcomics/ComicPager.java
index e8641db..ea8a502 100644
--- a/src/org/fox/ttcomics/ComicPager.java
+++ b/src/org/fox/ttcomics/ComicPager.java
@@ -28,14 +28,13 @@ public class ComicPager extends Fragment {
@Override
public Fragment getItem(int position) {
- return new ComicFragment(m_archive, position+1);
+ return new ComicFragment(position+1);
}
@Override
public int getCount() {
return m_archive.getCount();
}
-
}
private PagerAdapter m_adapter;
@@ -79,7 +78,7 @@ public class ComicPager extends Fragment {
m_fileName = fileName;
}
-
+
@SuppressLint("NewApi")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -88,7 +87,7 @@ public class ComicPager extends Fragment {
m_adapter = new PagerAdapter(getActivity().getSupportFragmentManager());
- ViewPager pager = (ViewPager) view.findViewById(R.id.comics_pager);
+ final ViewPager pager = (ViewPager) view.findViewById(R.id.comics_pager);
if (savedInstanceState != null) {
m_fileName = savedInstanceState.getString("fileName");