Uses PeopleStoryIconFactory in config activity

Change-Id: I485b6a994e41f19dd9a2ec49ee87ee2db686bb3d
Test: manual
Bug: 183721209
This commit is contained in:
Flavio Fiszman
2021-03-31 20:56:38 +01:00
parent 090ceb3af9
commit 2f71579eff
4 changed files with 40 additions and 42 deletions

View File

@@ -35,15 +35,8 @@
<ImageView
android:id="@+id/tile_view_person_icon"
android:layout_width="48dp"
android:layout_height="48dp" />
<ImageView
android:id="@+id/tile_view_package_icon"
android:layout_width="16dp"
android:layout_marginStart="-8dp"
android:layout_marginTop="32dp"
android:layout_height="16dp" />
android:layout_width="52dp"
android:layout_height="52dp" />
<LinearLayout
android:orientation="horizontal"

View File

@@ -19,6 +19,9 @@ package com.android.systemui.people;
import static android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_ID;
import static android.appwidget.AppWidgetManager.INVALID_APPWIDGET_ID;
import static com.android.systemui.people.PeopleTileViewHelper.getPersonIconBitmap;
import static com.android.systemui.people.PeopleTileViewHelper.getSizeInDp;
import android.app.Activity;
import android.app.INotificationManager;
import android.app.people.IPeopleManager;
@@ -149,11 +152,11 @@ public class PeopleSpaceActivity extends Activity {
/** Sets {@code tileView} with the data in {@code conversation}. */
private void setTileView(PeopleSpaceTileView tileView, PeopleSpaceTile tile) {
try {
String pkg = tile.getPackageName();
tileView.setName(tile.getUserName().toString());
tileView.setPackageIcon(mPackageManager.getApplicationIcon(pkg));
tileView.setPersonIcon(tile.getUserIcon());
tileView.setPersonIcon(getPersonIconBitmap(mContext, tile,
getSizeInDp(mContext, R.dimen.avatar_size_for_medium,
mContext.getResources().getDisplayMetrics().density)));
tileView.setOnClickListener(v -> storeWidgetConfiguration(tile));
} catch (Exception e) {
Log.e(TAG, "Couldn't retrieve shortcut information", e);

View File

@@ -19,8 +19,7 @@ package com.android.systemui.people;
import android.app.people.PeopleSpaceTile;
import android.content.Context;
import android.content.pm.LauncherApps;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -37,7 +36,6 @@ public class PeopleSpaceTileView extends LinearLayout {
private View mTileView;
private TextView mNameView;
private ImageView mPackageIconView;
private ImageView mPersonIconView;
public PeopleSpaceTileView(Context context, ViewGroup view, String shortcutId, boolean isLast) {
@@ -56,7 +54,6 @@ public class PeopleSpaceTileView extends LinearLayout {
}
}
mNameView = mTileView.findViewById(R.id.tile_view_name);
mPackageIconView = mTileView.findViewById(R.id.tile_view_package_icon);
mPersonIconView = mTileView.findViewById(R.id.tile_view_person_icon);
}
@@ -65,14 +62,9 @@ public class PeopleSpaceTileView extends LinearLayout {
mNameView.setText(name);
}
/** Sets the package drawable on the tile. */
public void setPackageIcon(Drawable drawable) {
mPackageIconView.setImageDrawable(drawable);
}
/** Sets the person bitmap on the tile. */
public void setPersonIcon(Icon icon) {
mPersonIconView.setImageIcon(icon);
/** Sets the person and package drawable on the tile. */
public void setPersonIcon(Bitmap bitmap) {
mPersonIconView.setImageBitmap(bitmap);
}
/** Sets the click listener of the tile. */

View File

@@ -192,7 +192,11 @@ class PeopleTileViewHelper {
}
private int getSizeInDp(int dimenResourceId) {
return (int) (mContext.getResources().getDimension(dimenResourceId) / mDensity);
return getSizeInDp(mContext, dimenResourceId, mDensity);
}
public static int getSizeInDp(Context context, int dimenResourceId, float density) {
return (int) (context.getResources().getDimension(dimenResourceId) / density);
}
private int getContentHeightForLayout(int lineHeight) {
@@ -278,24 +282,11 @@ class PeopleTileViewHelper {
} else {
views.setViewVisibility(R.id.availability, View.GONE);
}
boolean hasNewStory =
mTile.getStatuses() != null && mTile.getStatuses().stream().anyMatch(
c -> c.getActivity() == ACTIVITY_NEW_STORY);
views.setTextViewText(R.id.name, mTile.getUserName().toString());
views.setBoolean(R.id.image, "setClipToOutline", true);
Icon icon = mTile.getUserIcon();
PeopleStoryIconFactory storyIcon = new PeopleStoryIconFactory(mContext,
mContext.getPackageManager(),
IconDrawableFactory.newInstance(mContext, false),
maxAvatarSize);
Drawable drawable = icon.loadDrawable(mContext);
Drawable personDrawable = storyIcon.getPeopleTileDrawable(drawable,
mTile.getPackageName(), getUserId(mTile), mTile.isImportantConversation(),
hasNewStory);
Bitmap bitmap = convertDrawableToBitmap(personDrawable);
views.setImageViewBitmap(R.id.person_icon, bitmap);
views.setImageViewBitmap(R.id.person_icon,
getPersonIconBitmap(mContext, mTile, maxAvatarSize));
return views;
} catch (Exception e) {
Log.e(TAG, "Failed to set common fields: " + e);
@@ -583,4 +574,23 @@ class PeopleTileViewHelper {
return R.layout.people_tile_small;
}
}
/** Returns a bitmap with the user icon and package icon. */
public static Bitmap getPersonIconBitmap(
Context context, PeopleSpaceTile tile, int maxAvatarSize) {
boolean hasNewStory =
tile.getStatuses() != null && tile.getStatuses().stream().anyMatch(
c -> c.getActivity() == ACTIVITY_NEW_STORY);
Icon icon = tile.getUserIcon();
PeopleStoryIconFactory storyIcon = new PeopleStoryIconFactory(context,
context.getPackageManager(),
IconDrawableFactory.newInstance(context, false),
maxAvatarSize);
Drawable drawable = icon.loadDrawable(context);
Drawable personDrawable = storyIcon.getPeopleTileDrawable(drawable,
tile.getPackageName(), getUserId(tile), tile.isImportantConversation(),
hasNewStory);
return convertDrawableToBitmap(personDrawable);
}
}