diff options
author | Adam Cohen <adamcohen@google.com> | 2014-10-23 17:28:30 -0700 |
---|---|---|
committer | Adam Cohen <adamcohen@google.com> | 2014-10-24 11:47:30 -0700 |
commit | a6d0492e5f0dd4e1b43d4034a770241dc65f8f8c (patch) | |
tree | 7f9283954397d3b21703b849b5c70b17b553bb25 /src/com/android/launcher3/InsettableFrameLayout.java | |
parent | 4a080dcadd532dd259de596729a1cd6e949bdae4 (diff) | |
download | android_packages_apps_Trebuchet-a6d0492e5f0dd4e1b43d4034a770241dc65f8f8c.tar.gz android_packages_apps_Trebuchet-a6d0492e5f0dd4e1b43d4034a770241dc65f8f8c.tar.bz2 android_packages_apps_Trebuchet-a6d0492e5f0dd4e1b43d4034a770241dc65f8f8c.zip |
Allow LauncherOverlay to access and manage insets
Change-Id: Ib9faf37eb22ad2a0b18c076978ec9f2fd8864c0c
Diffstat (limited to 'src/com/android/launcher3/InsettableFrameLayout.java')
-rw-r--r-- | src/com/android/launcher3/InsettableFrameLayout.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/com/android/launcher3/InsettableFrameLayout.java b/src/com/android/launcher3/InsettableFrameLayout.java new file mode 100644 index 000000000..4ba9c88cd --- /dev/null +++ b/src/com/android/launcher3/InsettableFrameLayout.java @@ -0,0 +1,52 @@ +package com.android.launcher3; + +import android.content.Context; +import android.graphics.Rect; +import android.util.AttributeSet; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; + +public class InsettableFrameLayout extends FrameLayout implements + ViewGroup.OnHierarchyChangeListener, Insettable { + + protected Rect mInsets = new Rect(); + + public InsettableFrameLayout(Context context, AttributeSet attrs) { + super(context, attrs); + setOnHierarchyChangeListener(this); + } + + public void setFrameLayoutChildInsets(View child, Rect newInsets, Rect oldInsets) { + final FrameLayout.LayoutParams flp = (FrameLayout.LayoutParams) child.getLayoutParams(); + if (child instanceof Insettable) { + ((Insettable) child).setInsets(newInsets); + } else { + flp.topMargin += (newInsets.top - oldInsets.top); + flp.leftMargin += (newInsets.left - oldInsets.left); + flp.rightMargin += (newInsets.right - oldInsets.right); + flp.bottomMargin += (newInsets.bottom - oldInsets.bottom); + } + child.setLayoutParams(flp); + } + + @Override + public void setInsets(Rect insets) { + final int n = getChildCount(); + for (int i = 0; i < n; i++) { + final View child = getChildAt(i); + setFrameLayoutChildInsets(child, insets, mInsets); + } + mInsets.set(insets); + } + + @Override + public void onChildViewAdded(View parent, View child) { + setFrameLayoutChildInsets(child, mInsets, new Rect()); + } + + @Override + public void onChildViewRemoved(View parent, View child) { + } + +} |