summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Lesinski <adamlesinski@google.com>2010-12-01 17:00:10 -0800
committerAdam Lesinski <adamlesinski@google.com>2010-12-03 15:58:36 -0800
commit494767f1f8a29d2197837463fb6477646e682478 (patch)
treee5e7a9516ca9915d4fb0d9f514447740675053b9
parent2a0932d0c10f620f70617702386aa3b3af03a63c (diff)
downloadandroid_packages_wallpapers_LivePicker-494767f1f8a29d2197837463fb6477646e682478.zip
android_packages_wallpapers_LivePicker-494767f1f8a29d2197837463fb6477646e682478.tar.gz
android_packages_wallpapers_LivePicker-494767f1f8a29d2197837463fb6477646e682478.tar.bz2
Updated the LivePicker for tablet UI
- Basic UI for the new LivePicker. Missing small tweaks Change-Id: I5d48e5ea5afc7feccf5f35124b944283060685df
-rw-r--r--AndroidManifest.xml3
-rw-r--r--res/layout-xlarge/live_wallpaper_entry.xml38
-rw-r--r--res/layout-xlarge/live_wallpaper_list.xml41
-rw-r--r--res/layout/live_wallpaper_base.xml20
-rw-r--r--res/layout/live_wallpaper_entry.xml4
-rw-r--r--res/layout/live_wallpaper_list.xml8
-rw-r--r--res/layout/live_wallpaper_preview.xml5
-rw-r--r--res/values-xlarge/dimensions.xml25
-rw-r--r--res/values-xlarge/styles.xml22
-rw-r--r--res/values/dimensions.xml2
-rw-r--r--res/values/strings.xml4
-rw-r--r--res/values/styles.xml7
-rw-r--r--src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java100
-rw-r--r--src/com/android/wallpaper/livepicker/LiveWallpaperListAdapter.java69
14 files changed, 307 insertions, 41 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index b3698e5..2d8ae50 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -34,7 +34,8 @@
<activity android:name="LiveWallpaperListActivity"
android:icon="@drawable/ic_launcher_live_wallpaper"
android:label="@string/live_wallpaper_picker_title"
- android:theme="@android:style/Theme.NoTitleBar">
+ android:theme="@style/LivePickerTheme"
+ android:hardwareAccelerated="true">
<intent-filter>
<action android:name="android.service.wallpaper.LIVE_WALLPAPER_CHOOSER" />
<action android:name="android.intent.action.SET_WALLPAPER" />
diff --git a/res/layout-xlarge/live_wallpaper_entry.xml b/res/layout-xlarge/live_wallpaper_entry.xml
new file mode 100644
index 0000000..b2515a7
--- /dev/null
+++ b/res/layout-xlarge/live_wallpaper_entry.xml
@@ -0,0 +1,38 @@
+<?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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/live_wallpaper_grid_item_height"
+ android:padding="6dip">
+ <ImageView
+ android:id="@+id/thumbnail"
+ android:layout_width="@dimen/live_wallpaper_thumbnail_width"
+ android:layout_height="@dimen/live_wallpaper_thumbnail_height"
+ android:layout_gravity="center"
+ android:scaleType="centerCrop" />
+ <TextView
+ android:id="@+id/title"
+ android:layout_width="@dimen/live_wallpaper_thumbnail_width"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:layout_gravity="center"
+ android:gravity="bottom"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:singleLine="true"
+ android:ellipsize="marquee" />
+</LinearLayout>
diff --git a/res/layout-xlarge/live_wallpaper_list.xml b/res/layout-xlarge/live_wallpaper_list.xml
new file mode 100644
index 0000000..50d99a7
--- /dev/null
+++ b/res/layout-xlarge/live_wallpaper_list.xml
@@ -0,0 +1,41 @@
+<?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="match_parent"
+ android:gravity="center">
+ <GridView
+ android:id="@android:id/list"
+ android:layout_width="800dp"
+ android:layout_height="400dp"
+ android:layout_gravity="center"
+ android:numColumns="3"
+ android:stretchMode="columnWidth"
+ android:horizontalSpacing="15dp"
+ android:verticalSpacing="15dp"
+ android:drawSelectorOnTop="false" />
+ <TextView
+ android:id="@android:id/empty"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+
+ android:gravity="center"
+ android:visibility="gone"
+
+ android:text="@string/live_wallpaper_empty"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+</FrameLayout> \ No newline at end of file
diff --git a/res/layout/live_wallpaper_base.xml b/res/layout/live_wallpaper_base.xml
new file mode 100644
index 0000000..6803901
--- /dev/null
+++ b/res/layout/live_wallpaper_base.xml
@@ -0,0 +1,20 @@
+<?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:id="@+id/live_wallpaper_base_view"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"/>
diff --git a/res/layout/live_wallpaper_entry.xml b/res/layout/live_wallpaper_entry.xml
index cce484f..b39cefb 100644
--- a/res/layout/live_wallpaper_entry.xml
+++ b/res/layout/live_wallpaper_entry.xml
@@ -29,7 +29,7 @@
android:id="@+id/thumbnail"
android:layout_width="@dimen/live_wallpaper_thumbnail_width"
- android:layout_height="@dimen/live_wallpaper_thumbnail_width"
+ android:layout_height="@dimen/live_wallpaper_thumbnail_height"
android:layout_gravity="center_vertical"
@@ -47,7 +47,7 @@
android:orientation="vertical">
<TextView
- android:id="@+id/title_author"
+ android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/res/layout/live_wallpaper_list.xml b/res/layout/live_wallpaper_list.xml
index 9ac8c66..a3c22bb 100644
--- a/res/layout/live_wallpaper_list.xml
+++ b/res/layout/live_wallpaper_list.xml
@@ -14,8 +14,9 @@
limitations under the License.
-->
-<merge xmlns:android="http://schemas.android.com/apk/res/android" >
-
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
<ListView
android:id="@android:id/list"
@@ -34,5 +35,4 @@
android:text="@string/live_wallpaper_empty"
android:textAppearance="?android:attr/textAppearanceMedium" />
-
-</merge> \ No newline at end of file
+</FrameLayout> \ No newline at end of file
diff --git a/res/layout/live_wallpaper_preview.xml b/res/layout/live_wallpaper_preview.xml
index d5da853..38cc2ac 100644
--- a/res/layout/live_wallpaper_preview.xml
+++ b/res/layout/live_wallpaper_preview.xml
@@ -23,7 +23,7 @@
android:paddingBottom="4dip">
<Button
- android:layout_width="160dip"
+ android:layout_width="@dimen/live_wallpaper_preview_button_width"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
@@ -34,12 +34,11 @@
<Button
android:id="@+id/configure"
- android:layout_width="160dip"
+ android:layout_width="@dimen/live_wallpaper_preview_button_width"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/configure_wallpaper"
android:onClick="configureLiveWallpaper" />
-
</LinearLayout>
diff --git a/res/values-xlarge/dimensions.xml b/res/values-xlarge/dimensions.xml
new file mode 100644
index 0000000..f8c1966
--- /dev/null
+++ b/res/values-xlarge/dimensions.xml
@@ -0,0 +1,25 @@
+<?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.
+*/
+-->
+
+<resources>
+ <dimen name="live_wallpaper_thumbnail_width">200dip</dimen>
+ <dimen name="live_wallpaper_thumbnail_height">145dip</dimen>
+ <dimen name="live_wallpaper_grid_item_height">185dip</dimen>
+ <dimen name="live_wallpaper_preview_button_width">200dip</dimen>
+</resources>
diff --git a/res/values-xlarge/styles.xml b/res/values-xlarge/styles.xml
new file mode 100644
index 0000000..5338119
--- /dev/null
+++ b/res/values-xlarge/styles.xml
@@ -0,0 +1,22 @@
+<?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.
+*/
+-->
+
+<resources>
+ <style name="LivePickerTheme" parent="android:Theme.Holo.Dialog.NoFrame" />
+</resources>
diff --git a/res/values/dimensions.xml b/res/values/dimensions.xml
index d0ee3a6..8f19a71 100644
--- a/res/values/dimensions.xml
+++ b/res/values/dimensions.xml
@@ -22,4 +22,6 @@
<dimen name="live_wallpaper_thumbnail_text_offset">12dip</dimen>
<dimen name="live_wallpaper_thumbnail_width">75dip</dimen>
<dimen name="live_wallpaper_thumbnail_height">75dip</dimen>
+ <dimen name="dialog_content_inset">15dip</dimen>
+ <dimen name="live_wallpaper_preview_button_width">160dip</dimen>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c070c61..cab49ce 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -24,7 +24,7 @@
<string name="application_name">Live Wallpaper Picker</string>
<!-- Title for the screen that lets the user choose a live wallpaper to use
for the system. -->
- <string name="live_wallpaper_picker_title">Live wallpapers</string>
+ <string name="live_wallpaper_picker_title">Select live wallpaper</string>
<!-- Title for the screen that lets the user preview a live wallpaper. -->
<string name="live_wallpaper_preview_title">Live wallpaper preview</string>
<!-- List item for configuring the current wallpaper -->
@@ -39,5 +39,7 @@
<string name="wallpaper_title_and_author"><xliff:g id="title" example="Galaxy">%1$s</xliff:g> by <xliff:g id="author" example="Google">%2$s</xliff:g></string>
<!-- Message, tells the user the selected live wallpaper is loading. -->
<string name="live_wallpaper_loading">Loading live wallpaper…</string>
+ <!-- Button label, action, cancels the wallpaper picker dialog [CHAR_LIMIT=40]-->
+ <string name="wallpaper_cancel">Cancel</string>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index a55fbdb..8684f16 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -28,9 +28,14 @@
<item name="android:gravity">left</item>
</style>
- <style name="Preview" parent="@android:style/Theme.NoTitleBar">
+ <style name="Preview" parent="android:Theme.Holo">
+ <item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Activity</item>
</style>
+
+ <style name="LivePickerTheme" parent="android:style/Theme.Holo">
+ <item name="android:windowNoTitle">true</item>
+ </style>
</resources>
diff --git a/src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java b/src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java
index ecfbdea..c96e18c 100644
--- a/src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java
+++ b/src/com/android/wallpaper/livepicker/LiveWallpaperListActivity.java
@@ -16,25 +16,46 @@
package com.android.wallpaper.livepicker;
-import android.app.ListActivity;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.FragmentTransaction;
import android.app.WallpaperInfo;
import android.os.Bundle;
+import android.content.DialogInterface;
import android.content.Intent;
+import android.content.res.Configuration;
+import android.util.Log;
+import android.view.LayoutInflater;
import android.view.View;
+import android.view.ViewGroup;
import android.widget.AdapterView;
+import android.widget.BaseAdapter;
-public class LiveWallpaperListActivity extends ListActivity implements
- AdapterView.OnItemClickListener {
+public class LiveWallpaperListActivity extends Activity {
private static final String LOG_TAG = "LiveWallpapersPicker";
private static final int REQUEST_PREVIEW = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.live_wallpaper_list);
+ setContentView(R.layout.live_wallpaper_base);
+ ViewGroup baseView = (ViewGroup) findViewById(R.id.live_wallpaper_base_view);
- setListAdapter(new LiveWallpaperListAdapter(this));
- getListView().setOnItemClickListener(this);
+ boolean isXLarge = (getResources().getConfiguration().screenLayout
+ & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE;
+
+ DialogFragment fragment = new WallpaperDialogFragment(this, baseView, !isXLarge);
+ if (isXLarge) {
+ // When the screen is XLarge
+ fragment.show(getFragmentManager(), "dialog");
+ } else {
+ // When the screen is normal. i.e: a phone
+ FragmentTransaction ft = getFragmentManager().openTransaction();
+ ft.add(R.id.live_wallpaper_base_view, fragment);
+ ft.commit();
+ }
}
@Override
@@ -46,11 +67,66 @@ public class LiveWallpaperListActivity extends ListActivity implements
}
}
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- LiveWallpaperListAdapter.LiveWallpaperInfo wallpaperInfo =
- (LiveWallpaperListAdapter.LiveWallpaperInfo) getListAdapter().getItem(position);
- final Intent intent = wallpaperInfo.intent;
- final WallpaperInfo info = wallpaperInfo.info;
- LiveWallpaperPreview.showPreview(this, REQUEST_PREVIEW, intent, info);
+ private class WallpaperDialogFragment extends DialogFragment implements
+ AdapterView.OnItemClickListener{
+ private Activity mActivity;
+ private LiveWallpaperListAdapter mAdapter;
+ private ViewGroup mBaseView;
+ private boolean mEmbedded;
+
+ public WallpaperDialogFragment(Activity activity, ViewGroup baseView, boolean embedded) {
+ mActivity = activity;
+ mEmbedded = embedded;
+ mBaseView = baseView;
+ setCancelable(true);
+ }
+
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ mActivity.finish();
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ final int contentInset = getResources().getDimensionPixelSize(
+ R.dimen.dialog_content_inset);
+ View view = generateView(getLayoutInflater(), mBaseView);
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
+ builder.setNegativeButton(R.string.wallpaper_cancel, null);
+ builder.setTitle(R.string.live_wallpaper_picker_title);
+ builder.setView(view, contentInset, contentInset, contentInset, contentInset);
+ return builder.create();
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ if (mEmbedded) {
+ return generateView(inflater, container);
+ }
+ return super.onCreateView(inflater, container, savedInstanceState);
+ }
+
+ @SuppressWarnings("unchecked")
+ private View generateView(LayoutInflater inflater, ViewGroup container) {
+ View layout = inflater.inflate(R.layout.live_wallpaper_list, container, false);
+
+ mAdapter = new LiveWallpaperListAdapter(mActivity);
+ AdapterView<BaseAdapter> adapterView =
+ (AdapterView<BaseAdapter>) layout.findViewById(android.R.id.list);
+ adapterView.setAdapter(mAdapter);
+ adapterView.setOnItemClickListener(this);
+ adapterView.setEmptyView(layout.findViewById(android.R.id.empty));
+ return layout;
+ }
+
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ LiveWallpaperListAdapter.LiveWallpaperInfo wallpaperInfo =
+ (LiveWallpaperListAdapter.LiveWallpaperInfo) mAdapter.getItem(position);
+ final Intent intent = wallpaperInfo.intent;
+ final WallpaperInfo info = wallpaperInfo.info;
+ LiveWallpaperPreview.showPreview(mActivity, REQUEST_PREVIEW, intent, info);
+ }
}
}
diff --git a/src/com/android/wallpaper/livepicker/LiveWallpaperListAdapter.java b/src/com/android/wallpaper/livepicker/LiveWallpaperListAdapter.java
index 87e0384..6c07dcd 100644
--- a/src/com/android/wallpaper/livepicker/LiveWallpaperListAdapter.java
+++ b/src/com/android/wallpaper/livepicker/LiveWallpaperListAdapter.java
@@ -55,13 +55,29 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter
private final LayoutInflater mInflater;
private final PackageManager mPackageManager;
- private List<LiveWallpaperInfo> mWallpapers = new ArrayList<LiveWallpaperInfo>();
+ private List<LiveWallpaperInfo> mWallpapers;
+ @SuppressWarnings("unchecked")
public LiveWallpaperListAdapter(Context context) {
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mPackageManager = context.getPackageManager();
- new LiveWallpaperEnumerator(context).execute();
+ List<ResolveInfo> list = mPackageManager.queryIntentServices(
+ new Intent(WallpaperService.SERVICE_INTERFACE),
+ PackageManager.GET_META_DATA);
+
+ mWallpapers = generatePlaceholderViews(list.size());
+
+ new LiveWallpaperEnumerator(context).execute(list);
+ }
+
+ private List<LiveWallpaperInfo> generatePlaceholderViews(int amount) {
+ ArrayList<LiveWallpaperInfo> list = new ArrayList<LiveWallpaperInfo>(amount);
+ for (int i = 0; i < amount; i++) {
+ LiveWallpaperInfo info = new LiveWallpaperInfo();
+ list.add(info);
+ }
+ return list;
}
public int getCount() {
@@ -85,7 +101,7 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter
convertView = mInflater.inflate(R.layout.live_wallpaper_entry, parent, false);
holder = new ViewHolder();
- holder.title = (TextView) convertView.findViewById(R.id.title_author);
+ holder.title = (TextView) convertView.findViewById(R.id.title);
holder.description = (TextView) convertView.findViewById(R.id.description);
holder.thumbnail = (ImageView) convertView.findViewById(R.id.thumbnail);
convertView.setTag(holder);
@@ -94,15 +110,28 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter
}
LiveWallpaperInfo wallpaperInfo = mWallpapers.get(position);
- holder.thumbnail.setImageDrawable(wallpaperInfo.thumbnail);
- holder.title.setText(wallpaperInfo.info.loadLabel(mPackageManager));
- try {
- holder.description.setVisibility(View.VISIBLE);
- holder.description.setText(Html.fromHtml(
- wallpaperInfo.info.loadDescription(mPackageManager).toString()));
- } catch (Resources.NotFoundException e) {
- holder.description.setVisibility(View.GONE);
+ if (holder.thumbnail != null) {
+ holder.thumbnail.setImageDrawable(wallpaperInfo.thumbnail);
}
+
+ if (holder.title != null && wallpaperInfo.info != null) {
+ holder.title.setText(wallpaperInfo.info.loadLabel(mPackageManager));
+ if (holder.thumbnail == null) {
+ holder.title.setCompoundDrawablesWithIntrinsicBounds(null, wallpaperInfo.thumbnail,
+ null, null);
+ }
+ }
+
+ if (holder.description != null && wallpaperInfo.info != null) {
+ try {
+ holder.description.setVisibility(View.VISIBLE);
+ holder.description.setText(Html.fromHtml(
+ wallpaperInfo.info.loadDescription(mPackageManager).toString()));
+ } catch (Resources.NotFoundException e) {
+ holder.description.setVisibility(View.GONE);
+ }
+ }
+
return convertView;
}
@@ -118,21 +147,22 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter
ImageView thumbnail;
}
- private class LiveWallpaperEnumerator extends AsyncTask<Void, LiveWallpaperInfo, Void> {
+ private class LiveWallpaperEnumerator extends
+ AsyncTask<List<ResolveInfo>, LiveWallpaperInfo, Void> {
private Context mContext;
+ private int mWallpaperPosition;
public LiveWallpaperEnumerator(Context context) {
super();
mContext = context;
+ mWallpaperPosition = 0;
}
@Override
- protected Void doInBackground(Void... params) {
+ protected Void doInBackground(List<ResolveInfo>... params) {
final PackageManager packageManager = mContext.getPackageManager();
- List<ResolveInfo> list = packageManager.queryIntentServices(
- new Intent(WallpaperService.SERVICE_INTERFACE),
- PackageManager.GET_META_DATA);
+ List<ResolveInfo> list = params[0];
final Resources res = mContext.getResources();
BitmapDrawable galleryIcon = (BitmapDrawable) res.getDrawable(
@@ -214,7 +244,12 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter
@Override
protected void onProgressUpdate(LiveWallpaperInfo...infos) {
for (LiveWallpaperInfo info : infos) {
- mWallpapers.add(info);
+ if (mWallpaperPosition < mWallpapers.size()) {
+ mWallpapers.set(mWallpaperPosition, info);
+ } else {
+ mWallpapers.add(info);
+ }
+ mWallpaperPosition++;
LiveWallpaperListAdapter.this.notifyDataSetChanged();
}
}