diff options
author | Winson <winsonc@google.com> | 2016-07-20 12:55:49 -0700 |
---|---|---|
committer | Winson <winsonc@google.com> | 2016-07-20 16:21:24 -0700 |
commit | be9798b6a2ef7c2c827a612203d81c67b3ec81ac (patch) | |
tree | 029c6553863ce39857afb79955f1c5b38190fc29 /src/com/android/launcher3/ClickShadowView.java | |
parent | 2eeae10e984993af563b4d207deac855ca7d8620 (diff) | |
download | android_packages_apps_Trebuchet-be9798b6a2ef7c2c827a612203d81c67b3ec81ac.tar.gz android_packages_apps_Trebuchet-be9798b6a2ef7c2c827a612203d81c67b3ec81ac.tar.bz2 android_packages_apps_Trebuchet-be9798b6a2ef7c2c827a612203d81c67b3ec81ac.zip |
Fixing issue with shadow drawing over search bar.
- Adding notion of clip-against view for click shadow alignment.
Bug: 30255227
Change-Id: Id5716a3484051a55690025d61f709e3d96cbe024
Diffstat (limited to 'src/com/android/launcher3/ClickShadowView.java')
-rw-r--r-- | src/com/android/launcher3/ClickShadowView.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/com/android/launcher3/ClickShadowView.java b/src/com/android/launcher3/ClickShadowView.java index e2bc6bac5..aad111298 100644 --- a/src/com/android/launcher3/ClickShadowView.java +++ b/src/com/android/launcher3/ClickShadowView.java @@ -21,6 +21,7 @@ import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; +import android.graphics.Rect; import android.view.View; import android.view.ViewDebug; import android.view.ViewGroup; @@ -91,13 +92,27 @@ public class ClickShadowView extends View { * Aligns the shadow with {@param view} * @param viewParent immediate parent of {@param view}. It must be a sibling of this view. */ - public void alignWithIconView(BubbleTextView view, ViewGroup viewParent) { + public void alignWithIconView(BubbleTextView view, ViewGroup viewParent, View clipAgainstView) { float leftShift = view.getLeft() + viewParent.getLeft() - getLeft(); float topShift = view.getTop() + viewParent.getTop() - getTop(); int iconWidth = view.getRight() - view.getLeft(); + int iconHeight = view.getBottom() - view.getTop(); int iconHSpace = iconWidth - view.getCompoundPaddingRight() - view.getCompoundPaddingLeft(); float drawableWidth = view.getIcon().getBounds().width(); + if (clipAgainstView != null) { + // Set the bounds to clip against + int[] coords = new int[] {0, 0}; + Utilities.getDescendantCoordRelativeToAncestor(clipAgainstView, (View) getParent(), + coords, false); + int clipLeft = (int) Math.max(0, coords[0] - leftShift - mShadowPadding); + int clipTop = (int) Math.max(0, coords[1] - topShift - mShadowPadding) ; + setClipBounds(new Rect(clipLeft, clipTop, clipLeft + iconWidth, clipTop + iconHeight)); + } else { + // Reset the clip bounds + setClipBounds(null); + } + setTranslationX(leftShift + viewParent.getTranslationX() + view.getCompoundPaddingLeft() * view.getScaleX() |