From 8c724f568c92f2a60c28fdbed8fa72715d270ad9 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Mon, 14 Sep 2009 15:18:12 -0700 Subject: Port wallpaper chooser change from Launcher to Launcher2. Change-Id: I8af4dd737ab0533ed0994d81440c06b54d7118d9 --- src/com/android/launcher2/WallpaperChooser.java | 55 ++++++++++++++++--------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/src/com/android/launcher2/WallpaperChooser.java b/src/com/android/launcher2/WallpaperChooser.java index 8919ecef3..46f770fc4 100644 --- a/src/com/android/launcher2/WallpaperChooser.java +++ b/src/com/android/launcher2/WallpaperChooser.java @@ -23,6 +23,7 @@ import android.graphics.BitmapFactory; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.os.Bundle; +import android.os.AsyncTask; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -31,7 +32,6 @@ import android.view.Window; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.BaseAdapter; -import android.widget.Button; import android.widget.Gallery; import android.widget.ImageView; @@ -50,6 +50,7 @@ public class WallpaperChooser extends Activity implements AdapterView.OnItemSele private ArrayList mThumbs; private ArrayList mImages; + private AsyncTask mLoader; @Override public void onCreate(Bundle icicle) { @@ -60,17 +61,12 @@ public class WallpaperChooser extends Activity implements AdapterView.OnItemSele setContentView(R.layout.wallpaper_chooser); - mOptions = new BitmapFactory.Options(); - mOptions.inDither = false; - mOptions.inPreferredConfig = Bitmap.Config.ARGB_8888; - mGallery = (Gallery) findViewById(R.id.gallery); mGallery.setAdapter(new ImageAdapter(this)); mGallery.setOnItemSelectedListener(this); mGallery.setCallbackDuringFling(false); - Button b = (Button) findViewById(R.id.set); - b.setOnClickListener(this); + findViewById(R.id.set).setOnClickListener(this); mImageView = (ImageView) findViewById(R.id.wallpaper); } @@ -109,19 +105,10 @@ public class WallpaperChooser extends Activity implements AdapterView.OnItemSele } public void onItemSelected(AdapterView parent, View v, int position, long id) { - final ImageView view = mImageView; - Bitmap b = BitmapFactory.decodeResource(getResources(), mImages.get(position), mOptions); - view.setImageBitmap(b); - - // Help the GC - if (mBitmap != null) { - mBitmap.recycle(); + if (mLoader != null && mLoader.getStatus() != WallpaperLoader.Status.FINISHED) { + mLoader.cancel(true); } - mBitmap = b; - - final Drawable drawable = view.getDrawable(); - drawable.setFilterBitmap(true); - drawable.setDither(true); + mLoader = new WallpaperLoader().execute(position); } /* @@ -185,4 +172,34 @@ public class WallpaperChooser extends Activity implements AdapterView.OnItemSele public void onClick(View v) { selectWallpaper(mGallery.getSelectedItemPosition()); } + + class WallpaperLoader extends AsyncTask { + protected Bitmap doInBackground(Integer... params) { + if (isCancelled()) return null; + return BitmapFactory.decodeResource(getResources(), mImages.get(params[0]), null); + } + + @Override + protected void onPostExecute(Bitmap b) { + if (b == null) return; + + if (!isCancelled()) { + // Help the GC + if (mBitmap != null) { + mBitmap.recycle(); + } + + final ImageView view = mImageView; + view.setImageBitmap(b); + + mBitmap = b; + + final Drawable drawable = view.getDrawable(); + drawable.setFilterBitmap(true); + drawable.setDither(true); + + view.postInvalidate(); + } + } + } } -- cgit v1.2.3