Convert more loadIcon() to IconDrawableFactory
- AppGridView: used by preview chart in display size setting. - DefaultBrowserPreferenceController: default browser icon in default apps settings - Enterprise application list - Accessibility search result loader Change-Id: Ibd12cd8854c68760ea3428fffa735bcbba48a277 Fixes: 64336923 Test: robotests
This commit is contained in:
@@ -21,7 +21,10 @@ import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.UserHandle;
|
||||
import android.support.annotation.VisibleForTesting;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.IconDrawableFactory;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
@@ -63,7 +66,8 @@ public class AppGridView extends GridView {
|
||||
/**
|
||||
* Loads application labels and icons.
|
||||
*/
|
||||
private static class AppsAdapter extends ArrayAdapter<ActivityEntry> {
|
||||
@VisibleForTesting
|
||||
public static class AppsAdapter extends ArrayAdapter<ActivityEntry> {
|
||||
private final PackageManager mPackageManager;
|
||||
private final int mIconResId;
|
||||
|
||||
@@ -80,9 +84,8 @@ public class AppGridView extends GridView {
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
final View view = super.getView(position, convertView, parent);
|
||||
final ActivityEntry entry = getItem(position);
|
||||
final ImageView iconView = (ImageView) view.findViewById(mIconResId);
|
||||
final Drawable icon = entry.info.loadIcon(mPackageManager);
|
||||
iconView.setImageDrawable(icon);
|
||||
final ImageView iconView = view.findViewById(mIconResId);
|
||||
iconView.setImageDrawable(entry.getIcon());
|
||||
return view;
|
||||
}
|
||||
|
||||
@@ -108,10 +111,11 @@ public class AppGridView extends GridView {
|
||||
final PackageManager pm = mPackageManager;
|
||||
final ArrayList<ActivityEntry> results = new ArrayList<>();
|
||||
final List<ResolveInfo> infos = pm.queryIntentActivities(mainIntent, 0);
|
||||
final IconDrawableFactory iconFactory = IconDrawableFactory.newInstance(getContext());
|
||||
for (ResolveInfo info : infos) {
|
||||
final CharSequence label = info.loadLabel(pm);
|
||||
if (label != null) {
|
||||
results.add(new ActivityEntry(info, label.toString()));
|
||||
results.add(new ActivityEntry(info, label.toString(), iconFactory));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,13 +128,19 @@ public class AppGridView extends GridView {
|
||||
/**
|
||||
* Class used for caching the activity label and icon.
|
||||
*/
|
||||
private static class ActivityEntry implements Comparable<ActivityEntry> {
|
||||
@VisibleForTesting
|
||||
public static class ActivityEntry implements Comparable<ActivityEntry> {
|
||||
|
||||
public final ResolveInfo info;
|
||||
public final String label;
|
||||
private final IconDrawableFactory mIconFactory;
|
||||
private final int mUserId;
|
||||
|
||||
public ActivityEntry(ResolveInfo info, String label) {
|
||||
public ActivityEntry(ResolveInfo info, String label, IconDrawableFactory iconFactory) {
|
||||
this.info = info;
|
||||
this.label = label;
|
||||
mIconFactory = iconFactory;
|
||||
mUserId = UserHandle.myUserId();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -142,5 +152,10 @@ public class AppGridView extends GridView {
|
||||
public String toString() {
|
||||
return label;
|
||||
}
|
||||
|
||||
public Drawable getIcon() {
|
||||
return mIconFactory.getBadgedIcon(
|
||||
info.activityInfo, info.activityInfo.applicationInfo, mUserId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user