安卓高亮指引,在第一次使用某个app的时候很常见,许多app也用到了这个功能,好在鸿洋大神为我们提供了一个库:HighLight:https://github.com/hongyangAndroid/Highlight 下面是我自己对源码的一些理解。
思路:
在当前的布局上加入一层遮罩,这个遮罩并不是全黑的,在需要有功能提示的按钮处,需要用高亮的颜色突出,并且在按钮的上方加入引导布局。
HighLight类:
一个对绘制的遮罩和提示框进行配置的类,
ViewPosInfo:保存需要高亮提示的按钮信息的类。
MarginInfo: 提示布局的位置信息类
mAnchor:要在什么地方绘制带有高亮的遮罩
mViewRects: 负责保存所有需要在遮罩上高亮提示的按钮的信息。
1.通过addHighLight来对配置要高亮显示的按钮的信息
viewId:要高亮显示的按钮
decorLayoutId:要提示的布局的样式
OnPosCallBack:将提示的布局的信息抛给外面,负责对提示文字/图片的位置进行定制。
真正的配置实现方法。通过ViewUtils的getLocationInView方法拿到想要高亮的按钮在父容器中的位置,并把该View的范围,以及将要在该view上提示的布局,记录下来。同时把位置信息通过回调抛给外面。这样我们可以在回调中对位置进行一定的定制后,再存储到mViewRects中。第一次知道可以这样用回调,特意标注一下。
例:在回调中对提示文字的位置进行定制。
show方法中在布局上添加HightLightView,既加一层遮罩
1.可以看到如果跟布局是FrameLayout,可以直接在上面添加HightLightView
2.如果不是首先会替换跟布局为FrameLayout,再在Framealyout上加入我们的跟布局以及HightLightView。
HightLightView类:
这是一个自定义控件,在HightLight的show方法中会将所有配置好的数据传递进来。
1.mViewRects:所有在遮罩上需要高亮显示的地方
2.PorterDuffXfermode:因为我们是要在