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版本 *