From 79b33de70ceff9451adc2fdb0cc6ffb3adf71ece Mon Sep 17 00:00:00 2001 From: totoro Date: Tue, 19 Apr 2022 21:36:25 +0800 Subject: [PATCH] move the post logic to sdk; when statusbar showing after the maskview showed,dismiss it and reshow; --- .../com/demo/aty/SimpleGuideViewActivity.java | 5 --- .../java/com/binioter/guideview/Guide.java | 41 ++++++++++++++++++- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/demo/aty/SimpleGuideViewActivity.java b/app/src/main/java/com/demo/aty/SimpleGuideViewActivity.java index af7ec9a..b389f61 100644 --- a/app/src/main/java/com/demo/aty/SimpleGuideViewActivity.java +++ b/app/src/main/java/com/demo/aty/SimpleGuideViewActivity.java @@ -33,12 +33,7 @@ public void onClick(View view) { }); ll_nearby = (LinearLayout) findViewById(R.id.ll_nearby); ll_video = (LinearLayout) findViewById(R.id.ll_video); - header_imgbtn.post(new Runnable() { - @Override - public void run() { showGuideView(); - } - }); } public void showGuideView() { diff --git a/guideview/src/main/java/com/binioter/guideview/Guide.java b/guideview/src/main/java/com/binioter/guideview/Guide.java index 9511c34..3fb8cf3 100644 --- a/guideview/src/main/java/com/binioter/guideview/Guide.java +++ b/guideview/src/main/java/com/binioter/guideview/Guide.java @@ -2,10 +2,12 @@ import android.app.Activity; import android.content.Context; +import android.os.Build; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.view.WindowInsets; import android.view.animation.Animation; import android.view.animation.AnimationUtils; @@ -55,8 +57,23 @@ public void setOnSlideListener(GuideBuilder.OnSlideListener onSlideListener) { * * @param activity 目标Activity */ - public void show(Activity activity) { - show(activity, null); + public void show(final Activity activity) { + View target = mConfiguration.mTargetView; + if (target == null) { + target = activity.findViewById(mConfiguration.mTargetViewId); + } + if (target != null) { + if (mConfiguration.mTargetView.getMeasuredWidth() > 0 && mConfiguration.mTargetView.getMeasuredHeight() > 0) { + show(activity, null); + } else { + mConfiguration.mTargetView.post(new Runnable() { + @Override + public void run() { + show(activity, null); + } + }); + } + } } /** @@ -69,6 +86,26 @@ public void show(Activity activity, ViewGroup overlay) { mMaskView = onCreateView(activity, overlay); if (overlay == null) { overlay = (ViewGroup) activity.getWindow().getDecorView(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { + final ViewGroup finalOverlay = overlay; + final Activity finalActivity = activity; + overlay.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() { + private boolean executedBefore = false; + + @Override + public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) { + if (insets.getSystemWindowInsetTop() > 0) { + if (!executedBefore && mMaskView.isAttachedToWindow()) { //如果状态栏由隐藏变为显示此时如果已经展示了,重新展示一遍 + dismiss(); + show(finalActivity, finalOverlay); + executedBefore = true; + } + + } + return insets; + } + }); + } } if (mMaskView.getParent() == null && mConfiguration.mTargetView != null) { overlay.addView(mMaskView);