From 8862f5357fa1b5563a04c1f68e33a05c2d037036 Mon Sep 17 00:00:00 2001 From: looa Date: Tue, 8 Aug 2017 18:41:04 +0800 Subject: [PATCH] fix bug --- .../main/java/org/looa/view/ViewShadow.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/library/src/main/java/org/looa/view/ViewShadow.java b/library/src/main/java/org/looa/view/ViewShadow.java index 242ae98..dec458b 100644 --- a/library/src/main/java/org/looa/view/ViewShadow.java +++ b/library/src/main/java/org/looa/view/ViewShadow.java @@ -108,14 +108,13 @@ private static void createShadowIfNecessary(View view, ShadowData data) { int width = view.getWidth() + data.shadowRadius * 2 + data.dx * 2; int height = view.getHeight() + data.shadowRadius * 2 + data.dy * 2; - int top = view.getTop() - data.shadowRadius - data.dy; - int left = view.getLeft() - data.shadowRadius - data.dx; ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(width, height); View vShadow = new View(view.getContext()); - data.shadow = vShadow; vShadow.setLayoutParams(layoutParams); - vShadow.setTranslationX(left); - vShadow.setTranslationY(top); + + data.shadow = vShadow; + data.width = width; + data.height = height; Drawable drawable = view.getBackground(); data.cornerRadius = obtainRadius(drawable); @@ -143,10 +142,12 @@ private static void createShadowIfNecessary(View view, ShadowData data) { private static void trackTargetView(View view, ShadowData data) { if (data.shadow == null || view == null) return; - int top = (int) (view.getY() - data.shadowRadius - data.dy); - int left = (int) (view.getX() - data.shadowRadius - data.dx); - if (left != data.shadow.getTranslationX()) data.shadow.setTranslationX(left); + int top = view.getTop() - data.shadowRadius - data.dy; + int left = view.getLeft() - data.shadowRadius - data.dx; + top = data.height >= ((ViewGroup) view.getParent()).getHeight() ? 0 : top; + left = data.width >= ((ViewGroup) view.getParent()).getWidth() ? 0 : left; if (top != data.shadow.getTranslationY()) data.shadow.setTranslationY(top); + if (left != data.shadow.getTranslationX()) data.shadow.setTranslationX(left); } @@ -158,6 +159,7 @@ private static class ShadowData { int inner; int color; int top; + int width, height; View shadow;