package com.timehop.stickyheadersrecyclerview.calculation; import android.graphics.Rect; import android.view.View; import static android.view.ViewGroup.LayoutParams; import static android.view.ViewGroup.MarginLayoutParams; /** * Helper to calculate various view dimensions */ public class DimensionCalculator { /** * Returns {@link Rect} representing margins for any view. * * @param view for which to get margins * @return margins for the given view. All 0 if the view does not support margins */ public Rect getMargins(View view) { LayoutParams layoutParams = view.getLayoutParams(); if (layoutParams instanceof MarginLayoutParams) { MarginLayoutParams marginLayoutParams = (MarginLayoutParams) layoutParams; return getMarginRect(marginLayoutParams); } else { return new Rect(); } } /** * Converts {@link MarginLayoutParams} into a representative {@link Rect} * * @param marginLayoutParams margins to convert to a Rect * @return Rect representing margins, where {@link MarginLayoutParams#leftMargin} is equivalent to * {@link Rect#left}, etc. */ private Rect getMarginRect(MarginLayoutParams marginLayoutParams) { return new Rect( marginLayoutParams.leftMargin, marginLayoutParams.topMargin, marginLayoutParams.rightMargin, marginLayoutParams.bottomMargin ); } }