diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 4696778..2fe7677 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -65,14 +65,8 @@
     <!-- Match call_button_height to Phone's dimens/in_call_end_button_height -->
     <dimen name="call_button_height">74dp</dimen>
 
-    <!-- Height of the floating action button -->
-    <dimen name="floating_action_button_height">60dp</dimen>
-    <!-- Width of the floating action button -->
-    <dimen name="floating_action_button_width">60dp</dimen>
     <!-- Bottom margin of the floating action button -->
     <dimen name="floating_action_button_margin_bottom">10dp</dimen>
-    <!-- Z translation of the floating action button -->
-    <dimen name="floating_action_button_translation_z">5dp</dimen>
 
     <!-- Dimensions for speed dial tiles -->
     <dimen name="contact_tile_divider_width">1dp</dimen>
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 5dabb93..3603696 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -65,6 +65,7 @@
 import com.android.contacts.common.dialog.ClearFrequentsDialog;
 import com.android.contacts.common.interactions.ImportExportDialogFragment;
 import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
+import com.android.contacts.common.util.ViewUtil;
 import com.android.dialer.calllog.CallLogActivity;
 import com.android.dialer.database.DialerDatabaseHelper;
 import com.android.dialer.dialpad.DialpadFragment;
@@ -329,7 +330,7 @@
         mFragmentsFrame = findViewById(R.id.dialtacts_frame);
 
         mFloatingActionButton = findViewById(R.id.floating_action_button);
-        setupFloatingActionButton(mFloatingActionButton);
+        ViewUtil.setupFloatingActionButton(mFloatingActionButton, getResources());
 
         mDialButton = findViewById(R.id.dial_button);
         mDialButton.setOnClickListener(this);
@@ -888,34 +889,6 @@
         return resolveInfo != null && resolveInfo.size() > 0;
     }
 
-    private void setupFloatingActionButton(View view) {
-        // Once layout is complete and the floating action button has been assigned a width
-        // and height, assign the outline.
-        view.addOnLayoutChangeListener(new OnLayoutChangeListener() {
-            @Override
-            public void onLayoutChange(View v,
-                    int left,
-                    int top,
-                    int right,
-                    int bottom,
-                    int oldLeft,
-                    int oldTop,
-                    int oldRight,
-                    int oldBottom) {
-                final Outline outline = new Outline();
-                final int minDimension = Math.min(right - left, bottom - top);
-                if (minDimension <= 0) {
-                    return;
-                }
-                outline.setRoundRect(0, 0, right - left, bottom - top, minDimension / 2);
-                v.setOutline(outline);
-                v.setClipToOutline(true);
-            }
-        });
-        view.setTranslationZ(getResources().getDimensionPixelSize(
-                R.dimen.floating_action_button_translation_z));
-    }
-
     @Override
     public void showCallHistory() {
         // Use explicit CallLogActivity intent instead of ACTION_VIEW +
