From 7760716cff1c4644423f38c55241924b378242ca Mon Sep 17 00:00:00 2001 From: muxlz Date: Fri, 25 Feb 2022 09:09:56 +0800 Subject: [PATCH] add animation on surfacenode when size of window changes Signed-off-by: muxlz Change-Id: I4aa495c3d99953023cb703e98c91c93f270eb8c4 --- wmserver/src/window_layout_policy_cascade.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/wmserver/src/window_layout_policy_cascade.cpp b/wmserver/src/window_layout_policy_cascade.cpp index 8faa6d614b..f8f36251cf 100644 --- a/wmserver/src/window_layout_policy_cascade.cpp +++ b/wmserver/src/window_layout_policy_cascade.cpp @@ -223,7 +223,15 @@ void WindowLayoutPolicyCascade::UpdateLayoutRect(sptr& node) CalcAndSetNodeHotZone(winRect, node); if (IsLayoutChanged(lastRect, winRect) || node->GetWindowType() == WindowType::WINDOW_TYPE_DOCK_SLICE) { node->GetWindowToken()->UpdateWindowRect(winRect, node->GetWindowSizeChangeReason()); - node->surfaceNode_->SetBounds(winRect.posX_, winRect.posY_, winRect.width_, winRect.height_); + if (node->GetWindowSizeChangeReason() == WindowSizeChangeReason::MAXIMIZE || + node->GetWindowSizeChangeReason() == WindowSizeChangeReason::RECOVER) { + const RSAnimationTimingProtocol timingProtocol(400); + RSNode::Animate(timingProtocol, RSAnimationTimingCurve::EASE_OUT, [=]() { + node->surfaceNode_->SetBounds(winRect.posX_, winRect.posY_, winRect.width_, winRect.height_); + }); + } else { + node->surfaceNode_->SetBounds(winRect.posX_, winRect.posY_, winRect.width_, winRect.height_); + } } } -- Gitee