Merge change 24929 into eclair
* changes: Port wallpaper chooser change from Launcher to Launcher2.
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user