Merge change 24929 into eclair

* changes:
  Port wallpaper chooser change from Launcher to Launcher2.
This commit is contained in:
Android (Google) Code Review
2009-09-14 18:18:45 -04:00
+36 -19
View File
@@ -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<Integer> mThumbs;
private ArrayList<Integer> mImages;
private AsyncTask<Integer,Void,Bitmap> 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<Integer, Void, Bitmap> {
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();
}
}
}
}