From 86782c4c0b82274fa2654009457830629294fba8 Mon Sep 17 00:00:00 2001 From: zhuzhihui7 Date: Wed, 26 May 2021 16:29:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E4=BD=8D=E7=A7=BB=E5=8A=A8=E7=94=BB=E4=BC=9A=E8=AE=A9offsetX()?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E5=92=8CoffsetY()=E5=B1=9E=E6=80=A7=E5=A4=B1?= =?UTF-8?q?=E6=95=88=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stackLayout/QuickStartDemo.java | 1 + .../animator/TranslateAlphaAnimator.java | 21 ++++++++++++++----- .../xpopup/animator/TranslateAnimator.java | 21 ++++++++++++++----- 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/entry/src/main/java/com/lxj/xpopupdemo/stackLayout/QuickStartDemo.java b/entry/src/main/java/com/lxj/xpopupdemo/stackLayout/QuickStartDemo.java index c0e7c84..9f50246 100644 --- a/entry/src/main/java/com/lxj/xpopupdemo/stackLayout/QuickStartDemo.java +++ b/entry/src/main/java/com/lxj/xpopupdemo/stackLayout/QuickStartDemo.java @@ -282,6 +282,7 @@ public class QuickStartDemo extends BaseStackLayout implements Component.Clicked case ResourceTable.Id_btnShowPosition1: new XPopup.Builder(getContext()) .offsetY(300) + .offsetX(-100) .popupAnimation(PopupAnimation.TranslateFromLeft) .asCustom(new QQMsgPopup(getContext())) .show(); diff --git a/library/src/main/java/com/lxj/xpopup/animator/TranslateAlphaAnimator.java b/library/src/main/java/com/lxj/xpopup/animator/TranslateAlphaAnimator.java index 0c3815f..3311004 100644 --- a/library/src/main/java/com/lxj/xpopup/animator/TranslateAlphaAnimator.java +++ b/library/src/main/java/com/lxj/xpopup/animator/TranslateAlphaAnimator.java @@ -34,22 +34,22 @@ public class TranslateAlphaAnimator extends PopupAnimator { private void applyTranslation() { switch (popupAnimation) { case TranslateAlphaFromLeft: - endTranslationX = targetView.getLeft(); + endTranslationX = targetView.getLeft() + targetView.getTranslationX(); targetView.setTranslationX(-targetView.getRight()); startTranslationX = -targetView.getWidth(); break; case TranslateAlphaFromRight: - endTranslationX = targetView.getLeft(); + endTranslationX = targetView.getLeft() + targetView.getTranslationX(); targetView.setTranslationX(((Component) targetView.getComponentParent()).getWidth() - targetView.getLeft()); startTranslationX = ((Component) targetView.getComponentParent()).getWidth(); break; case TranslateAlphaFromTop: - endTranslationY = targetView.getTop(); + endTranslationY = targetView.getTop() + targetView.getTranslationY(); targetView.setTranslationY(-targetView.getBottom()); startTranslationY = -targetView.getHeight(); break; case TranslateAlphaFromBottom: - endTranslationY = targetView.getTop(); + endTranslationY = targetView.getTop() + targetView.getTranslationY(); targetView.setTranslationY(((Component) targetView.getComponentParent()).getHeight() - targetView.getTop()); startTranslationY = ((Component) targetView.getComponentParent()).getHeight(); break; @@ -65,7 +65,18 @@ public class TranslateAlphaAnimator extends PopupAnimator { animator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() { @Override public void onUpdate(AnimatorValue animatorValue, float value) { - targetView.setTranslation((1 - value) * (startTranslationX - endTranslationX), (1 - value) * (startTranslationY - endTranslationY)); + switch (popupAnimation) { + case TranslateFromLeft: + case TranslateFromRight: + targetView.setTranslationX((1 - value) * (startTranslationX - endTranslationX) + endTranslationX); + break; + case TranslateFromTop: + case TranslateFromBottom: + targetView.setTranslationY((1 - value) * (startTranslationY - endTranslationY) + endTranslationY); + break; + default: + break; + } targetView.setAlpha(value); } }); diff --git a/library/src/main/java/com/lxj/xpopup/animator/TranslateAnimator.java b/library/src/main/java/com/lxj/xpopup/animator/TranslateAnimator.java index 4864d1a..bad72d8 100644 --- a/library/src/main/java/com/lxj/xpopup/animator/TranslateAnimator.java +++ b/library/src/main/java/com/lxj/xpopup/animator/TranslateAnimator.java @@ -34,22 +34,22 @@ public class TranslateAnimator extends PopupAnimator { private void applyTranslation() { switch (popupAnimation) { case TranslateFromLeft: - endTranslationX = targetView.getLeft(); + endTranslationX = targetView.getLeft() + targetView.getTranslationX(); targetView.setTranslationX(-targetView.getRight()); startTranslationX = -targetView.getWidth(); break; case TranslateFromRight: - endTranslationX = targetView.getLeft(); + endTranslationX = targetView.getLeft() + targetView.getTranslationX(); targetView.setTranslationX(((Component) targetView.getComponentParent()).getWidth() - targetView.getLeft()); startTranslationX = ((Component) targetView.getComponentParent()).getWidth(); break; case TranslateFromTop: - endTranslationY = targetView.getTop(); + endTranslationY = targetView.getTop() + targetView.getTranslationY(); targetView.setTranslationY(-targetView.getBottom()); startTranslationY = -targetView.getHeight(); break; case TranslateFromBottom: - endTranslationY = targetView.getTop(); + endTranslationY = targetView.getTop() + targetView.getTranslationY(); targetView.setTranslationY(((Component) targetView.getComponentParent()).getHeight() - targetView.getTop()); startTranslationY = ((Component) targetView.getComponentParent()).getHeight(); break; @@ -66,7 +66,18 @@ public class TranslateAnimator extends PopupAnimator { animator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() { @Override public void onUpdate(AnimatorValue animatorValue, float value) { - targetView.setTranslation((1 - value) * (startTranslationX - endTranslationX), (1 - value) * (startTranslationY - endTranslationY)); + switch (popupAnimation) { + case TranslateFromLeft: + case TranslateFromRight: + targetView.setTranslationX((1 - value) * (startTranslationX - endTranslationX) + endTranslationX); + break; + case TranslateFromTop: + case TranslateFromBottom: + targetView.setTranslationY((1 - value) * (startTranslationY - endTranslationY) + endTranslationY); + break; + default: + break; + } } }); animator.start(); -- Gitee