From 587791785f5ec8ed3887ea0998de4400e0b223f5 Mon Sep 17 00:00:00 2001 From: zak Date: Sat, 13 Mar 2021 11:28:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B9=EF=BC=8C=E5=85=81=E8=AE=B8=E9=AB=98=E4=BA=AE=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E7=9B=AE=E6=A0=87=20view=20=E7=9A=84=E7=88=B6=20view?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/demo/aty/SimpleGuideViewActivity.java | 3 ++- .../com/binioter/guideview/Configuration.java | 7 +++++++ .../main/java/com/binioter/guideview/Guide.java | 16 ++++++++++++++-- .../com/binioter/guideview/GuideBuilder.java | 13 +++++++++++++ 4 files changed, 36 insertions(+), 3 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..0d4f7db 100644 --- a/app/src/main/java/com/demo/aty/SimpleGuideViewActivity.java +++ b/app/src/main/java/com/demo/aty/SimpleGuideViewActivity.java @@ -67,7 +67,8 @@ public void showGuideView2() { final GuideBuilder builder1 = new GuideBuilder(); builder1.setTargetView(ll_nearby) .setAlpha(150) - .setHighTargetGraphStyle(Component.CIRCLE); + .setHighTargetGraphStyle(Component.ROUNDRECT) + .setIsHighlightParent(true); builder1.setOnVisibilityChangedListener(new GuideBuilder.OnVisibilityChangedListener() { @Override public void onShown() { diff --git a/guideview/src/main/java/com/binioter/guideview/Configuration.java b/guideview/src/main/java/com/binioter/guideview/Configuration.java index fa64a4c..889351e 100644 --- a/guideview/src/main/java/com/binioter/guideview/Configuration.java +++ b/guideview/src/main/java/com/binioter/guideview/Configuration.java @@ -90,6 +90,11 @@ class Configuration implements Parcelable { int mExitAnimationId = -1; + /** + * 是否高亮显示父 view + */ + boolean mIsHighlightShowParent = false; + @Override public int describeContents() { return 0; @@ -110,6 +115,7 @@ public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mGraphStyle); dest.writeByte((byte) (mAutoDismiss ? 1 : 0)); dest.writeByte((byte) (mOverlayTarget ? 1 : 0)); + dest.writeByte((byte) (mIsHighlightShowParent ? 1 : 0)); } public static final Creator CREATOR = new Creator() { @@ -129,6 +135,7 @@ public Configuration createFromParcel(Parcel source) { conf.mGraphStyle = source.readInt(); conf.mAutoDismiss = source.readByte() == 1; conf.mOverlayTarget = source.readByte() == 1; + conf.mIsHighlightShowParent = source.readByte() == 1; return conf; } diff --git a/guideview/src/main/java/com/binioter/guideview/Guide.java b/guideview/src/main/java/com/binioter/guideview/Guide.java index 9511c34..8fde5e8 100644 --- a/guideview/src/main/java/com/binioter/guideview/Guide.java +++ b/guideview/src/main/java/com/binioter/guideview/Guide.java @@ -198,12 +198,24 @@ private MaskView onCreateView(Activity activity, ViewGroup overlay) { } if (mConfiguration.mTargetView != null) { - maskView.setTargetRect(Common.getViewAbsRect(mConfiguration.mTargetView, parentX, parentY)); + if (mConfiguration.mIsHighlightShowParent && + mConfiguration.mTargetView.getParent() != null) { + maskView.setTargetRect(Common.getViewAbsRect((View) mConfiguration.mTargetView.getParent(), + parentX, parentY)); + } else { + maskView.setTargetRect(Common.getViewAbsRect(mConfiguration.mTargetView, parentX, parentY)); + } } else { // Gets the target view's abs rect View target = activity.findViewById(mConfiguration.mTargetViewId); if (target != null) { - maskView.setTargetRect(Common.getViewAbsRect(target, parentX, parentY)); + if (mConfiguration.mIsHighlightShowParent && + target.getParent() != null) { + maskView.setTargetRect(Common.getViewAbsRect((View) target.getParent(), + parentX, parentY)); + } else { + maskView.setTargetRect(Common.getViewAbsRect(target, parentX, parentY)); + } } } diff --git a/guideview/src/main/java/com/binioter/guideview/GuideBuilder.java b/guideview/src/main/java/com/binioter/guideview/GuideBuilder.java index c818bd6..14bd2d4 100644 --- a/guideview/src/main/java/com/binioter/guideview/GuideBuilder.java +++ b/guideview/src/main/java/com/binioter/guideview/GuideBuilder.java @@ -322,6 +322,19 @@ public GuideBuilder setHighTargetPaddingBottom(int padding) { return this; } + /** + * 是否高粱展示父 view + * + * @return GuideBuilder + */ + public GuideBuilder setIsHighlightParent(boolean isHighlightParent) { + if (mBuilt) { + throw new BuildException("Already created. rebuild a new one."); + } + mConfiguration.mIsHighlightShowParent = isHighlightParent; + return this; + } + /** * 创建Guide,非Fragment版本 *