diff options
4 files changed, 40 insertions, 42 deletions
diff --git a/packages/SystemUI/res/layout/people_space_tile_view.xml b/packages/SystemUI/res/layout/people_space_tile_view.xml index 8f64ddf7011d..3e901808e66a 100644 --- a/packages/SystemUI/res/layout/people_space_tile_view.xml +++ b/packages/SystemUI/res/layout/people_space_tile_view.xml @@ -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" diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java index ba41d33bab92..02c12f6d51e5 100644 --- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java +++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java @@ -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); diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceTileView.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceTileView.java index e30ad80be3f6..36b435b04fd6 100644 --- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceTileView.java +++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceTileView.java @@ -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. */ diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java b/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java index 8d1b712e0807..96fbe6987562 100644 --- a/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java +++ b/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java @@ -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); + } } |