diff options
-rw-r--r-- | AndroidManifest.xml | 15 | ||||
-rw-r--r-- | res/drawable-xhdpi/wallpaper_picker_preview.png | bin | 334702 -> 0 bytes | |||
-rw-r--r-- | res/drawable/wallpaper_gallery_background.xml | 20 | ||||
-rw-r--r-- | res/drawable/wallpaper_gallery_item.xml | 22 | ||||
-rw-r--r-- | res/layout-sw720dp/wallpaper_item.xml | 26 | ||||
-rw-r--r-- | res/layout/wallpaper_chooser.xml | 44 | ||||
-rw-r--r-- | res/layout/wallpaper_chooser_base.xml | 28 | ||||
-rw-r--r-- | res/layout/wallpaper_item.xml | 23 | ||||
-rw-r--r-- | res/values/extra_wallpapers.xml | 21 | ||||
-rw-r--r-- | res/values/wallpapers.xml | 21 | ||||
-rw-r--r-- | res/xml/wallpaper_picker_preview.xml | 20 | ||||
-rw-r--r-- | src/com/android/launcher3/UserInitializeReceiver.java | 33 | ||||
-rw-r--r-- | src/com/android/launcher3/WallpaperChooser.java | 47 | ||||
-rw-r--r-- | src/com/android/launcher3/WallpaperChooserDialogFragment.java | 360 |
14 files changed, 1 insertions, 679 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 64bd4e30c..6965fc6cb 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -113,21 +113,6 @@ </activity> <activity - android:name="com.android.launcher3.WallpaperChooser" - android:theme="@style/Theme.WallpaperPicker" - android:label="@string/pick_wallpaper" - android:icon="@mipmap/ic_launcher_wallpaper" - android:finishOnCloseSystemDialogs="true" - android:process=":wallpaper_chooser"> - <intent-filter> - <action android:name="android.intent.action.SET_WALLPAPER" /> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - <meta-data android:name="android.wallpaper.preview" - android:resource="@xml/wallpaper_picker_preview" /> - </activity> - - <activity android:name="com.android.launcher3.WallpaperPickerActivity" android:theme="@style/Theme.WallpaperPicker" android:label="@string/pick_wallpaper" diff --git a/res/drawable-xhdpi/wallpaper_picker_preview.png b/res/drawable-xhdpi/wallpaper_picker_preview.png Binary files differdeleted file mode 100644 index 456045511..000000000 --- a/res/drawable-xhdpi/wallpaper_picker_preview.png +++ /dev/null diff --git a/res/drawable/wallpaper_gallery_background.xml b/res/drawable/wallpaper_gallery_background.xml deleted file mode 100644 index 283b4684c..000000000 --- a/res/drawable/wallpaper_gallery_background.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2011 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <gradient android:startColor="#0000" android:endColor="#D0000000" - android:angle="270"/> -</shape> diff --git a/res/drawable/wallpaper_gallery_item.xml b/res/drawable/wallpaper_gallery_item.xml deleted file mode 100644 index b7052bd39..000000000 --- a/res/drawable/wallpaper_gallery_item.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2011 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_focused="true" android:drawable="@drawable/grid_focused" /> - <item android:state_pressed="true" android:drawable="@drawable/grid_pressed" /> - <item android:state_selected="true" android:drawable="@drawable/grid_selected" /> - <item android:drawable="@android:color/transparent" /> -</selector> diff --git a/res/layout-sw720dp/wallpaper_item.xml b/res/layout-sw720dp/wallpaper_item.xml deleted file mode 100644 index f3c32173f..000000000 --- a/res/layout-sw720dp/wallpaper_item.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2010 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:background="@drawable/wallpaper_gallery_item"> - <ImageView - android:id="@+id/wallpaper_image" - android:layout_width="@dimen/wallpaper_chooser_grid_width" - android:layout_height="@dimen/wallpaper_chooser_grid_height" - android:scaleType="centerCrop" - android:focusable="true" /> -</FrameLayout> diff --git a/res/layout/wallpaper_chooser.xml b/res/layout/wallpaper_chooser.xml deleted file mode 100644 index 49930769c..000000000 --- a/res/layout/wallpaper_chooser.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2008, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <LinearLayout - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:background="@drawable/wallpaper_gallery_background"> - - <Gallery android:id="@+id/gallery" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:spacing="-4dp" /> - - <Button android:id="@+id/set" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/wallpaper_instructions" - android:layout_gravity="center_horizontal" /> - </LinearLayout> -</RelativeLayout> - diff --git a/res/layout/wallpaper_chooser_base.xml b/res/layout/wallpaper_chooser_base.xml deleted file mode 100644 index 14906674e..000000000 --- a/res/layout/wallpaper_chooser_base.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent"> - <fragment class="com.android.launcher3.WallpaperChooserDialogFragment" - android:id="@+id/wallpaper_chooser_fragment" - android:layout_width="match_parent" - android:layout_height="match_parent" /> -</FrameLayout> diff --git a/res/layout/wallpaper_item.xml b/res/layout/wallpaper_item.xml deleted file mode 100644 index bd3fa2bd3..000000000 --- a/res/layout/wallpaper_item.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2008 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<ImageView xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/wallpaper_image" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:background="@drawable/wallpaper_gallery_item" - android:scaleType="fitXY" - android:focusable="true" /> diff --git a/res/values/extra_wallpapers.xml b/res/values/extra_wallpapers.xml deleted file mode 100644 index 9e0951cfa..000000000 --- a/res/values/extra_wallpapers.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - * Copyright (C) 2009 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - --> - -<resources> - <string-array name="extra_wallpapers"> - </string-array> -</resources> diff --git a/res/values/wallpapers.xml b/res/values/wallpapers.xml deleted file mode 100644 index 1e340e4b2..000000000 --- a/res/values/wallpapers.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - * Copyright (C) 2009 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - --> - -<resources> - <string-array name="wallpapers" translatable="false"> - </string-array> -</resources> diff --git a/res/xml/wallpaper_picker_preview.xml b/res/xml/wallpaper_picker_preview.xml deleted file mode 100644 index ce7124cef..000000000 --- a/res/xml/wallpaper_picker_preview.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2011 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<wallpaper-preview - xmlns:android="http://schemas.android.com/apk/res/android" - android:staticWallpaperPreview="@drawable/wallpaper_picker_preview"> -</wallpaper-preview> diff --git a/src/com/android/launcher3/UserInitializeReceiver.java b/src/com/android/launcher3/UserInitializeReceiver.java index 5cd518190..9ccefe492 100644 --- a/src/com/android/launcher3/UserInitializeReceiver.java +++ b/src/com/android/launcher3/UserInitializeReceiver.java @@ -34,37 +34,6 @@ import android.content.res.Resources; public class UserInitializeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - final Resources resources = context.getResources(); - // Context.getPackageName() may return the "original" package name, - // com.android.launcher3; Resources needs the real package name, - // com.android.launcher3. So we ask Resources for what it thinks the - // package name should be. - final String packageName = resources.getResourcePackageName(R.array.wallpapers); - ArrayList<Integer> list = new ArrayList<Integer>(); - addWallpapers(resources, packageName, R.array.wallpapers, list); - addWallpapers(resources, packageName, R.array.extra_wallpapers, list); - WallpaperManager wpm = (WallpaperManager) context.getSystemService( - Context.WALLPAPER_SERVICE); - for (int i=1; i<list.size(); i++) { - int resid = list.get(i); - if (!wpm.hasResourceWallpaper(resid)) { - try { - wpm.setResource(resid); - } catch (IOException e) { - } - return; - } - } - } - - private void addWallpapers(Resources resources, String packageName, int resid, - ArrayList<Integer> outList) { - final String[] extras = resources.getStringArray(resid); - for (String extra : extras) { - int res = resources.getIdentifier(extra, "drawable", packageName); - if (res != 0) { - outList.add(res); - } - } + // TODO: initial wallpaper now that wallpapers are owned by another app } } diff --git a/src/com/android/launcher3/WallpaperChooser.java b/src/com/android/launcher3/WallpaperChooser.java deleted file mode 100644 index fe81ccbb5..000000000 --- a/src/com/android/launcher3/WallpaperChooser.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.launcher3; - -import com.android.launcher3.R; - -import android.app.Activity; -import android.app.DialogFragment; -import android.app.Fragment; -import android.os.Bundle; - -public class WallpaperChooser extends Activity { - @SuppressWarnings("unused") - private static final String TAG = "Launcher.WallpaperChooser"; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - setContentView(R.layout.wallpaper_chooser_base); - - Fragment fragmentView = - getFragmentManager().findFragmentById(R.id.wallpaper_chooser_fragment); - // TODO: The following code is currently not exercised. Leaving it here in case it - // needs to be revived again. - if (fragmentView == null) { - /* When the screen is XLarge, the fragment is not included in the layout, so show it - * as a dialog - */ - DialogFragment fragment = WallpaperChooserDialogFragment.newInstance(); - fragment.show(getFragmentManager(), "dialog"); - } - } -} diff --git a/src/com/android/launcher3/WallpaperChooserDialogFragment.java b/src/com/android/launcher3/WallpaperChooserDialogFragment.java deleted file mode 100644 index 99de815f9..000000000 --- a/src/com/android/launcher3/WallpaperChooserDialogFragment.java +++ /dev/null @@ -1,360 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.launcher3; - -import android.app.Activity; -import android.app.Dialog; -import android.app.DialogFragment; -import android.app.WallpaperManager; -import android.content.Context; -import android.content.DialogInterface; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Canvas; -import android.graphics.ColorFilter; -import android.graphics.drawable.Drawable; -import android.os.AsyncTask; -import android.os.Bundle; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.BaseAdapter; -import android.widget.Gallery; -import android.widget.ImageView; -import android.widget.ListAdapter; -import android.widget.SpinnerAdapter; - -import com.android.launcher3.R; - -import java.io.IOException; -import java.util.ArrayList; - -public class WallpaperChooserDialogFragment extends DialogFragment implements - AdapterView.OnItemSelectedListener, AdapterView.OnItemClickListener { - - private static final String TAG = "Launcher.WallpaperChooserDialogFragment"; - private static final String EMBEDDED_KEY = "com.android.launcher3." - + "WallpaperChooserDialogFragment.EMBEDDED_KEY"; - - private boolean mEmbedded; - private Bitmap mBitmap = null; - - private ArrayList<Integer> mThumbs; - private ArrayList<Integer> mImages; - private WallpaperLoader mLoader; - private WallpaperDrawable mWallpaperDrawable = new WallpaperDrawable(); - - public static WallpaperChooserDialogFragment newInstance() { - WallpaperChooserDialogFragment fragment = new WallpaperChooserDialogFragment(); - fragment.setCancelable(true); - return fragment; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (savedInstanceState != null && savedInstanceState.containsKey(EMBEDDED_KEY)) { - mEmbedded = savedInstanceState.getBoolean(EMBEDDED_KEY); - } else { - mEmbedded = isInLayout(); - } - } - - @Override - public void onSaveInstanceState(Bundle outState) { - outState.putBoolean(EMBEDDED_KEY, mEmbedded); - } - - private void cancelLoader() { - if (mLoader != null && mLoader.getStatus() != WallpaperLoader.Status.FINISHED) { - mLoader.cancel(true); - mLoader = null; - } - } - - @Override - public void onDetach() { - super.onDetach(); - - cancelLoader(); - } - - @Override - public void onDestroy() { - super.onDestroy(); - - cancelLoader(); - } - - @Override - public void onDismiss(DialogInterface dialog) { - super.onDismiss(dialog); - /* On orientation changes, the dialog is effectively "dismissed" so this is called - * when the activity is no longer associated with this dying dialog fragment. We - * should just safely ignore this case by checking if getActivity() returns null - */ - Activity activity = getActivity(); - if (activity != null) { - activity.finish(); - } - } - - /* This will only be called when in XLarge mode, since this Fragment is invoked like - * a dialog in that mode - */ - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - findWallpapers(); - - return null; - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - findWallpapers(); - - /* If this fragment is embedded in the layout of this activity, then we should - * generate a view to display. Otherwise, a dialog will be created in - * onCreateDialog() - */ - if (mEmbedded) { - View view = inflater.inflate(R.layout.wallpaper_chooser, container, false); - view.setBackground(mWallpaperDrawable); - - final Gallery gallery = (Gallery) view.findViewById(R.id.gallery); - gallery.setCallbackDuringFling(false); - gallery.setOnItemSelectedListener(this); - gallery.setAdapter(new ImageAdapter(getActivity())); - - View setButton = view.findViewById(R.id.set); - setButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - selectWallpaper(gallery.getSelectedItemPosition()); - } - }); - return view; - } - return null; - } - - private void selectWallpaper(int position) { - try { - WallpaperManager wpm = (WallpaperManager) getActivity().getSystemService( - Context.WALLPAPER_SERVICE); - wpm.setResource(mImages.get(position)); - Activity activity = getActivity(); - activity.setResult(Activity.RESULT_OK); - activity.finish(); - } catch (IOException e) { - Log.e(TAG, "Failed to set wallpaper: " + e); - } - } - - // Click handler for the Dialog's GridView - @Override - public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - selectWallpaper(position); - } - - // Selection handler for the embedded Gallery view - @Override - public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { - if (mLoader != null && mLoader.getStatus() != WallpaperLoader.Status.FINISHED) { - mLoader.cancel(); - } - mLoader = (WallpaperLoader) new WallpaperLoader().execute(position); - } - - @Override - public void onNothingSelected(AdapterView<?> parent) { - } - - private void findWallpapers() { - mThumbs = new ArrayList<Integer>(24); - mImages = new ArrayList<Integer>(24); - - final Resources resources = getResources(); - // Context.getPackageName() may return the "original" package name, - // com.android.launcher3; Resources needs the real package name, - // com.android.launcher3. So we ask Resources for what it thinks the - // package name should be. - final String packageName = resources.getResourcePackageName(R.array.wallpapers); - - addWallpapers(resources, packageName, R.array.wallpapers); - addWallpapers(resources, packageName, R.array.extra_wallpapers); - } - - private void addWallpapers(Resources resources, String packageName, int list) { - final String[] extras = resources.getStringArray(list); - for (String extra : extras) { - int res = resources.getIdentifier(extra, "drawable", packageName); - if (res != 0) { - final int thumbRes = resources.getIdentifier(extra + "_small", - "drawable", packageName); - - if (thumbRes != 0) { - mThumbs.add(thumbRes); - mImages.add(res); - // Log.d(TAG, "add: [" + packageName + "]: " + extra + " (" + res + ")"); - } - } - } - } - - private class ImageAdapter extends BaseAdapter implements ListAdapter, SpinnerAdapter { - private LayoutInflater mLayoutInflater; - - ImageAdapter(Activity activity) { - mLayoutInflater = activity.getLayoutInflater(); - } - - public int getCount() { - return mThumbs.size(); - } - - public Object getItem(int position) { - return position; - } - - public long getItemId(int position) { - return position; - } - - public View getView(int position, View convertView, ViewGroup parent) { - View view; - - if (convertView == null) { - view = mLayoutInflater.inflate(R.layout.wallpaper_item, parent, false); - } else { - view = convertView; - } - - ImageView image = (ImageView) view.findViewById(R.id.wallpaper_image); - - int thumbRes = mThumbs.get(position); - image.setImageResource(thumbRes); - Drawable thumbDrawable = image.getDrawable(); - if (thumbDrawable != null) { - thumbDrawable.setDither(true); - } else { - Log.e(TAG, "Error decoding thumbnail resId=" + thumbRes + " for wallpaper #" - + position); - } - - return view; - } - } - - class WallpaperLoader extends AsyncTask<Integer, Void, Bitmap> { - BitmapFactory.Options mOptions; - - WallpaperLoader() { - mOptions = new BitmapFactory.Options(); - mOptions.inDither = false; - mOptions.inPreferredConfig = Bitmap.Config.ARGB_8888; - } - - @Override - protected Bitmap doInBackground(Integer... params) { - if (isCancelled()) return null; - try { - return BitmapFactory.decodeResource(getResources(), - mImages.get(params[0]), mOptions); - } catch (OutOfMemoryError e) { - return null; - } - } - - @Override - protected void onPostExecute(Bitmap b) { - if (b == null) return; - - if (!isCancelled() && !mOptions.mCancel) { - // Help the GC - if (mBitmap != null) { - mBitmap.recycle(); - } - - View v = getView(); - if (v != null) { - mBitmap = b; - mWallpaperDrawable.setBitmap(b); - v.postInvalidate(); - } else { - mBitmap = null; - mWallpaperDrawable.setBitmap(null); - } - mLoader = null; - } else { - b.recycle(); - } - } - - void cancel() { - mOptions.requestCancelDecode(); - super.cancel(true); - } - } - - /** - * Custom drawable that centers the bitmap fed to it. - */ - static class WallpaperDrawable extends Drawable { - - Bitmap mBitmap; - int mIntrinsicWidth; - int mIntrinsicHeight; - - /* package */void setBitmap(Bitmap bitmap) { - mBitmap = bitmap; - if (mBitmap == null) - return; - mIntrinsicWidth = mBitmap.getWidth(); - mIntrinsicHeight = mBitmap.getHeight(); - } - - @Override - public void draw(Canvas canvas) { - if (mBitmap == null) return; - int width = canvas.getWidth(); - int height = canvas.getHeight(); - int x = (width - mIntrinsicWidth) / 2; - int y = (height - mIntrinsicHeight) / 2; - canvas.drawBitmap(mBitmap, x, y, null); - } - - @Override - public int getOpacity() { - return android.graphics.PixelFormat.OPAQUE; - } - - @Override - public void setAlpha(int alpha) { - // Ignore - } - - @Override - public void setColorFilter(ColorFilter cf) { - // Ignore - } - } -} |