From f6dc3a117d0da896ae59dcc6a3da6e76a9f8661f Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Fri, 15 Jan 2021 10:35:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0TopView=E7=B2=98=E6=80=A7?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extensions/utils/TopViewAnimHelper.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java index de88f7ac66..4254a93618 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java @@ -83,6 +83,9 @@ public class TopViewAnimHelper { cameraMode = rootView.findViewById(R.id.module_ext_id_north); // 初始化默认隐藏导航 hideNaviView(); + + showStickView(); + } private volatile boolean isTopViewOut = true; @@ -185,10 +188,32 @@ public class TopViewAnimHelper { }).start(); } + private final List stickViewCache = new ArrayList<>(); + + private void showStickView() { + if (stickViewCache.isEmpty()) { + return; + } else if (stickViewCache.size() == 1) { + MotionViewCache stickView = stickViewCache.remove(0); + startTopInAnim(stickView.view, stickView.params, stickView.statusListener); + return; + } + for (int i = 0; i < stickViewCache.size() - 2; i++) { + MotionViewCache stickView = stickViewCache.get(i); + stickView.statusListener.beforeViewRemoveAnim(stickView.view); + stickView.statusListener.onViewRemoved(stickView.view); + } + MotionViewCache stickView = stickViewCache.get(stickViewCache.size() - 1); + stickViewCache.clear(); + startTopInAnim(stickView.view, stickView.params, stickView.statusListener); + } + public void startTopInAnim(View view, ViewGroup.LayoutParams params, IMogoTopViewStatusListener statusListener) { if (topMotionLayout == null) { + // 增加黏性事件 + stickViewCache.add(new MotionViewCache(view, params, statusListener)); return; }