Adding an upper bound to all-apps width on larger devices

Change-Id: I16a0d8fb7c5023045d0a6b9e8089e0ab6a476d6d
diff --git a/src/com/android/launcher3/BaseContainerView.java b/src/com/android/launcher3/BaseContainerView.java
index 51a97b9..64d50b7 100644
--- a/src/com/android/launcher3/BaseContainerView.java
+++ b/src/com/android/launcher3/BaseContainerView.java
@@ -18,16 +18,12 @@
 
 import android.content.Context;
 import android.content.res.TypedArray;
-import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.InsetDrawable;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.View;
 import android.widget.FrameLayout;
 
-import com.android.launcher3.config.ProviderConfig;
-
 /**
  * A base container view, which supports resizing.
  */
@@ -52,9 +48,7 @@
         super(context, attrs, defStyleAttr);
 
         int width = ((Launcher) context).getDeviceProfile().availableWidthPx;
-        mHorizontalPadding = Math.max(
-                getResources().getDimensionPixelSize(R.dimen.container_min_margin),
-                (int) getResources().getFraction(R.fraction.container_margin, width, 1));
+        mHorizontalPadding = DeviceProfile.getMaxContainerWidth(context, width);
 
         TypedArray a = context.obtainStyledAttributes(attrs,
                 R.styleable.BaseContainerView, defStyleAttr, 0);
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 7c6f39e..c0267c4 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -594,4 +594,19 @@
                 ? Math.min(widthPx, heightPx)
                 : Math.max(widthPx, heightPx);
     }
+
+
+    public static final int getMaxContainerWidth(Context context, int availableWidth) {
+        Resources res = context.getResources();
+
+        int maxSize = res.getDimensionPixelSize(R.dimen.container_max_width);
+        int minMargin = res.getDimensionPixelSize(R.dimen.container_min_margin);
+
+        if (maxSize > 0) {
+            return Math.max(minMargin, (availableWidth - maxSize) / 2);
+        } else {
+            return Math.max(minMargin,
+                    (int) res.getFraction(R.fraction.container_margin, availableWidth, 1));
+        }
+    }
 }