summaryrefslogtreecommitdiffstats
path: root/framesequence/samples
diff options
context:
space:
mode:
Diffstat (limited to 'framesequence/samples')
-rw-r--r--framesequence/samples/RastermillSamples/src/com/android/rastermill/samples/AnimatedGifTest.java84
1 files changed, 65 insertions, 19 deletions
diff --git a/framesequence/samples/RastermillSamples/src/com/android/rastermill/samples/AnimatedGifTest.java b/framesequence/samples/RastermillSamples/src/com/android/rastermill/samples/AnimatedGifTest.java
index ea593dc..71f35e6 100644
--- a/framesequence/samples/RastermillSamples/src/com/android/rastermill/samples/AnimatedGifTest.java
+++ b/framesequence/samples/RastermillSamples/src/com/android/rastermill/samples/AnimatedGifTest.java
@@ -16,6 +16,7 @@
package com.android.rastermill.samples;
import android.app.Activity;
+import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.rastermill.FrameSequence;
import android.support.rastermill.FrameSequenceDrawable;
@@ -24,51 +25,96 @@ import android.widget.ImageView;
import android.widget.Toast;
import java.io.InputStream;
+import java.util.HashSet;
public class AnimatedGifTest extends Activity {
+ FrameSequenceDrawable mDrawable;
+
+ // This provider is entirely unnecessary, just here to validate the acquire/release process
+ private class CheckingProvider implements FrameSequenceDrawable.BitmapProvider {
+ HashSet<Bitmap> mBitmaps = new HashSet<Bitmap>();
+ @Override
+ public Bitmap acquireBitmap(int minWidth, int minHeight) {
+ Bitmap bitmap =
+ Bitmap.createBitmap(minWidth + 1, minHeight + 4, Bitmap.Config.ARGB_8888);
+ mBitmaps.add(bitmap);
+ return bitmap;
+ }
+
+ @Override
+ public void releaseBitmap(Bitmap bitmap) {
+ if (!mBitmaps.contains(bitmap)) throw new IllegalStateException();
+ mBitmaps.remove(bitmap);
+ bitmap.recycle();
+ }
+
+ public boolean isEmpty() {
+ return mBitmaps.isEmpty();
+ }
+ }
+
+ final CheckingProvider mProvider = new CheckingProvider();
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.basic_test_activity);
- ImageView imageView = (ImageView) findViewById(R.id.imageview);
-
- InputStream is = getResources().openRawResource(R.raw.animated);
-
- FrameSequence fs = FrameSequence.decodeStream(is);
- final FrameSequenceDrawable drawable = new FrameSequenceDrawable(fs);
- drawable.setOnFinishedListener(new FrameSequenceDrawable.OnFinishedListener() {
- @Override
- public void onFinished(FrameSequenceDrawable drawable) {
- Toast.makeText(getApplicationContext(),
- "THE ANIMATION HAS FINISHED", Toast.LENGTH_SHORT).show();
- }
- });
- imageView.setImageDrawable(drawable);
-
findViewById(R.id.start).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- drawable.start();
+ mDrawable.start();
}
});
findViewById(R.id.stop).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- drawable.stop();
+ mDrawable.stop();
}
});
findViewById(R.id.vis).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- drawable.setVisible(true, true);
+ mDrawable.setVisible(true, true);
}
});
findViewById(R.id.invis).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- drawable.setVisible(false, true);
+ mDrawable.setVisible(false, true);
}
});
}
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ ImageView imageView = (ImageView) findViewById(R.id.imageview);
+ InputStream is = getResources().openRawResource(R.raw.animated);
+
+ FrameSequence fs = FrameSequence.decodeStream(is);
+ mDrawable = new FrameSequenceDrawable(fs, mProvider);
+ mDrawable.setOnFinishedListener(new FrameSequenceDrawable.OnFinishedListener() {
+ @Override
+ public void onFinished(FrameSequenceDrawable drawable) {
+ Toast.makeText(getApplicationContext(),
+ "THE ANIMATION HAS FINISHED", Toast.LENGTH_SHORT).show();
+ }
+ });
+ imageView.setImageDrawable(mDrawable);
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ ImageView imageView = (ImageView) findViewById(R.id.imageview);
+
+ mDrawable.recycle(mProvider);
+ if (!mProvider.isEmpty()) throw new IllegalStateException("All bitmaps not recycled");
+
+ mDrawable = null;
+ imageView.setImageDrawable(null);
+
+ }
}