Dialer: restyle favorite contacts view

Change-Id: I4d4a2920e747130c7236cab2f2bb454a0e9b5079
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteListView.java b/java/com/android/dialer/app/list/PhoneFavoriteListView.java
index ff867f9..732a7f9 100644
--- a/java/com/android/dialer/app/list/PhoneFavoriteListView.java
+++ b/java/com/android/dialer/app/list/PhoneFavoriteListView.java
@@ -21,6 +21,7 @@
 import android.content.Context;
 import android.content.res.Configuration;
 import android.graphics.Bitmap;
+import android.graphics.Canvas;
 import android.os.Handler;
 import android.util.AttributeSet;
 import android.view.DragEvent;
@@ -244,6 +245,9 @@
 
     dragShadowOverlay.setX(dragShadowLeft);
     dragShadowOverlay.setY(dragShadowTop);
+
+    dragShadowOverlay.setClipToOutline(true);
+    dragShadowOverlay.setOutlineProvider(tileView.getOutlineProvider());
   }
 
   @Override
@@ -276,22 +280,11 @@
   public void onDroppedOnRemove() {}
 
   private Bitmap createDraggedChildBitmap(View view) {
-    view.setDrawingCacheEnabled(true);
-    final Bitmap cache = view.getDrawingCache();
-
-    Bitmap bitmap = null;
-    if (cache != null) {
-      try {
-        bitmap = cache.copy(Bitmap.Config.ARGB_8888, false);
-      } catch (final OutOfMemoryError e) {
-        LogUtil.w(LOG_TAG, "Failed to copy bitmap from Drawing cache", e);
-        bitmap = null;
-      }
-    }
-
-    view.destroyDrawingCache();
-    view.setDrawingCacheEnabled(false);
-
+    Bitmap bitmap = Bitmap.createBitmap(
+        view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888
+    );
+    Canvas canvas = new Canvas(bitmap);
+    view.draw(canvas);
     return bitmap;
   }
 
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java
index 8fe67f4..9ddcb19 100644
--- a/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java
+++ b/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java
@@ -17,11 +17,14 @@
 package com.android.dialer.app.list;
 
 import android.content.Context;
+import android.graphics.Outline;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.QuickContact;
 import android.util.AttributeSet;
 import android.view.View;
+import android.view.ViewOutlineProvider;
 import android.widget.ImageButton;
+import android.widget.ImageView;
 import android.widget.TextView;
 import com.android.contacts.common.list.ContactEntry;
 import com.android.dialer.app.R;
@@ -37,6 +40,19 @@
   private ImageButton secondaryButton;
 
   private ContactEntry contactEntry;
+  private PhoneFavoriteSquareTileViewOutline mOutlineProvider;
+
+  private static class PhoneFavoriteSquareTileViewOutline extends ViewOutlineProvider {
+        public int mRadius;
+
+        public PhoneFavoriteSquareTileViewOutline(int radius) {
+            mRadius = radius;
+        }
+        @Override
+        public void getOutline(View view, Outline outline) {
+            outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), mRadius);
+        }
+  }
 
   public PhoneFavoriteSquareTileView(Context context, AttributeSet attrs) {
     super(context, attrs);
@@ -54,6 +70,15 @@
     TextView phoneTypeView = findViewById(R.id.contact_tile_phone_type);
     phoneTypeView.setElegantTextHeight(false);
     secondaryButton = findViewById(R.id.contact_tile_secondary_button);
+
+    mOutlineProvider = new PhoneFavoriteSquareTileViewOutline(
+        getContext().getResources().getDimensionPixelSize(R.dimen.contact_tile_edge_radius));
+    ImageView photo = (ImageView) findViewById(R.id.contact_tile_image);
+    photo.setClipToOutline(true);
+    photo.setOutlineProvider(mOutlineProvider);
+
+    shadowOverlay.setClipToOutline(true);
+    shadowOverlay.setOutlineProvider(mOutlineProvider);
   }
 
   @Override
@@ -110,4 +135,8 @@
   public ContactEntry getContactEntry() {
     return contactEntry;
   }
+
+  public ViewOutlineProvider getOutlineProvider() {
+    return mOutlineProvider;
+  }
 }
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
index 7f0a6bc..c4528dd 100644
--- a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
+++ b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
@@ -61,7 +61,7 @@
   // don't crash with an NPE if the drag shadow is released in their bounds
   private static final ClipData EMPTY_CLIP_DATA = ClipData.newPlainText("", "");
   /** View that contains the transparent shadow that is overlaid on top of the contact image. */
-  private View shadowOverlay;
+  protected View shadowOverlay;
   /** Users' most frequent phone number. */
   private String phoneNumberString;
 
diff --git a/java/com/android/dialer/app/res/layout/phone_favorite_tile_view.xml b/java/com/android/dialer/app/res/layout/phone_favorite_tile_view.xml
index df7ce5c..74d8702 100644
--- a/java/com/android/dialer/app/res/layout/phone_favorite_tile_view.xml
+++ b/java/com/android/dialer/app/res/layout/phone_favorite_tile_view.xml
@@ -16,9 +16,7 @@
 <view
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/contact_tile"
-    class="com.android.dialer.app.list.PhoneFavoriteSquareTileView"
-    android:paddingBottom="@dimen/contact_tile_divider_width"
-    android:paddingEnd="@dimen/contact_tile_divider_width">
+    class="com.android.dialer.app.list.PhoneFavoriteSquareTileView">
 
   <RelativeLayout
       android:id="@+id/contact_favorite_card"
@@ -27,7 +25,7 @@
       android:focusable="true"
       android:nextFocusRight="@+id/contact_tile_secondary_button">
 
-    <com.android.contacts.common.widget.LayoutSuppressingImageView
+    <ImageView
         android:id="@+id/contact_tile_image"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -72,7 +70,7 @@
             android:fadingEdge="horizontal"
             android:fadingEdgeLength="3dip"
             android:fontFamily="sans-serif-medium"
-            android:singleLine="true"
+            android:maxLines="2"
             android:textAlignment="viewStart"
             android:textColor="?colorTextOnUnthemedDarkBackground"
             android:textSize="15sp"/>
@@ -96,7 +94,8 @@
           android:singleLine="true"
           android:textAlignment="viewStart"
           android:textColor="?colorTextOnUnthemedDarkBackground"
-          android:textSize="11sp"/>
+          android:textSize="11sp"
+          android:visibility="gone"/>
     </LinearLayout>
 
     <View
diff --git a/java/com/android/dialer/app/res/layout/speed_dial_fragment.xml b/java/com/android/dialer/app/res/layout/speed_dial_fragment.xml
index 3fa3be2..b216103 100644
--- a/java/com/android/dialer/app/res/layout/speed_dial_fragment.xml
+++ b/java/com/android/dialer/app/res/layout/speed_dial_fragment.xml
@@ -24,10 +24,8 @@
     android:id="@+id/contact_tile_frame"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:layout_alignParentLeft="true"
-    android:layout_alignParentTop="true"
-    android:paddingStart="@dimen/favorites_row_start_padding"
-    android:paddingEnd="@dimen/favorites_row_end_padding">
+    android:layout_marginStart="@dimen/favorites_row_side_margin"
+    android:layout_marginEnd="@dimen/favorites_row_side_margin">
     <com.android.dialer.app.list.PhoneFavoriteListView
       android:id="@+id/contact_tile_list"
       android:layout_width="match_parent"
@@ -38,7 +36,9 @@
       android:divider="@null"
       android:fadingEdge="none"
       android:nestedScrollingEnabled="true"
-      android:numColumns="@integer/contact_tile_column_count_in_favorites"/>
+      android:numColumns="@integer/contact_tile_column_count_in_favorites"
+      android:horizontalSpacing="@dimen/contact_tile_divider_width"
+      android:verticalSpacing="@dimen/contact_tile_divider_width" />
   </FrameLayout>
 
   <com.android.dialer.widget.EmptyContentView
diff --git a/java/com/android/dialer/app/res/values/dimens.xml b/java/com/android/dialer/app/res/values/dimens.xml
index fdbcac9..000455d 100644
--- a/java/com/android/dialer/app/res/values/dimens.xml
+++ b/java/com/android/dialer/app/res/values/dimens.xml
@@ -41,16 +41,14 @@
   <dimen name="contact_photo_size">48dp</dimen>
 
   <!-- Dimensions for speed dial tiles -->
-  <dimen name="contact_tile_divider_width">1dp</dimen>
+  <dimen name="contact_tile_divider_width">8dp</dimen>
   <dimen name="contact_tile_info_button_height_and_width">36dp</dimen>
-  <item name="contact_tile_height_to_width_ratio" type="dimen">76%</item>
+  <item name="contact_tile_height_to_width_ratio" type="dimen">85%</item>
   <dimen name="contact_tile_text_side_padding">12dp</dimen>
   <dimen name="contact_tile_text_bottom_padding">9dp</dimen>
   <dimen name="favorites_row_top_padding">1dp</dimen>
-  <dimen name="favorites_row_start_padding">1dp</dimen>
-
-  <!-- Padding from the last contact tile will provide the end padding. -->
-  <dimen name="favorites_row_end_padding">0dp</dimen>
+  <dimen name="favorites_row_side_margin">8dp</dimen>
+  <dimen name="contact_tile_edge_radius">12dp</dimen>
 
   <!-- Size of the star icon on the favorites tile. -->
   <dimen name="favorites_star_icon_size">12dp</dimen>
diff --git a/java/com/android/dialer/main/impl/toolbar/res/layout/toolbar_layout.xml b/java/com/android/dialer/main/impl/toolbar/res/layout/toolbar_layout.xml
index fb85d50..c92d05e 100644
--- a/java/com/android/dialer/main/impl/toolbar/res/layout/toolbar_layout.xml
+++ b/java/com/android/dialer/main/impl/toolbar/res/layout/toolbar_layout.xml
@@ -107,7 +107,7 @@
           android:id="@+id/remove_view_content"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
-          android:background="?android:attr/colorPrimary"
+          android:background="@drawable/search_bar_background_rounded_corners"
           android:gravity="center"
           android:orientation="horizontal"
           android:visibility="gone">
@@ -119,14 +119,15 @@
             android:layout_marginTop="8dp"
             android:layout_marginBottom="8dp"
             android:src="@drawable/quantum_ic_close_vd_theme_24"
-            android:tint="?colorIconOnUnthemedDarkBackground"/>
+            android:tint="?android:attr/colorPrimary"/>
 
         <TextView
             android:id="@+id/remove_view_text"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="@string/main_remove_contact"
-            android:textColor="?colorTextOnUnthemedDarkBackground"
+            android:textColor="?android:attr/colorPrimary"
+            android:layout_marginStart="8dp"
             android:textSize="16sp"/>
       </LinearLayout>
     </com.android.dialer.app.list.RemoveView>
diff --git a/java/com/android/dialer/theme/common/res/values-v31/styles.xml b/java/com/android/dialer/theme/common/res/values-v31/styles.xml
index 0739744..6e311b9 100644
--- a/java/com/android/dialer/theme/common/res/values-v31/styles.xml
+++ b/java/com/android/dialer/theme/common/res/values-v31/styles.xml
@@ -28,4 +28,4 @@
     <item name="cardElevation">0dp</item>
   </style>
 
-</resources>
\ No newline at end of file
+</resources>