summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Sandler <dsandler@android.com>2013-07-11 14:42:43 -0500
committerMichael Jurka <mikejurka@google.com>2013-08-21 13:36:18 +0200
commit6241609bd6b0c2de50d0130815a5df72b10e587c (patch)
treeb10062ea0d87e950f8003a0c911e1f8ec9c5fcc8
parent104c45677660586026a7e74ef8c47d396403d50e (diff)
downloadandroid_packages_apps_Trebuchet-6241609bd6b0c2de50d0130815a5df72b10e587c.tar.gz
android_packages_apps_Trebuchet-6241609bd6b0c2de50d0130815a5df72b10e587c.tar.bz2
android_packages_apps_Trebuchet-6241609bd6b0c2de50d0130815a5df72b10e587c.zip
Remove built-in wallpaper picker.
Note that we don't yet have a solution for the user's initial wallpaper. Bother! Bug: 9626042 Change-Id: I07ab09a3d10434e444dc27051034d387e692e469
-rw-r--r--AndroidManifest.xml15
-rw-r--r--res/drawable-xhdpi/wallpaper_picker_preview.pngbin334702 -> 0 bytes
-rw-r--r--res/drawable/wallpaper_gallery_background.xml20
-rw-r--r--res/drawable/wallpaper_gallery_item.xml22
-rw-r--r--res/layout-sw720dp/wallpaper_item.xml26
-rw-r--r--res/layout/wallpaper_chooser.xml44
-rw-r--r--res/layout/wallpaper_chooser_base.xml28
-rw-r--r--res/layout/wallpaper_item.xml23
-rw-r--r--res/values/extra_wallpapers.xml21
-rw-r--r--res/values/wallpapers.xml21
-rw-r--r--res/xml/wallpaper_picker_preview.xml20
-rw-r--r--src/com/android/launcher3/UserInitializeReceiver.java33
-rw-r--r--src/com/android/launcher3/WallpaperChooser.java47
-rw-r--r--src/com/android/launcher3/WallpaperChooserDialogFragment.java360
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
deleted file mode 100644
index 456045511..000000000
--- a/res/drawable-xhdpi/wallpaper_picker_preview.png
+++ /dev/null
Binary files differ
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
- }
- }
-}