在日常的Android
的开发中,我们要为一个Activity
或者任何一个View
创建一个遮罩式的的导航提示,这里分享一个快速实现的库——GuideView
。
GuideView
快速的为一个Activity里的任何一个View控件创建一个遮罩式的导航页,并且可以再高亮区域绘制任何你想要的布局或者lottie动画等炫酷效果。开源库的大佬这个库实现原理:
首先它需要一个目标View或者它的id,我们通过findViewById来得到这个View,计算它在屏幕上的区域targetRect,通过这个区域,开始绘制一个覆盖整个Activity的遮罩,可以定义遮罩的颜色和透明度,然而目标View被绘制成透明从而实现高亮的效果。接下来是在相对于这个targetRect的区域绘制一些图片或者文字。我们把这样一张图片或者文字抽象成一个Component接口,设置文字或者图片,所有的图片文字都是相对于targetRect来定义的。可以设定额外的x,y偏移量,可以对遮罩系统设置可见状态的发生变化时的监听回调,可以对遮罩系统设置开始和结束时的动画效。
GuideView的引入
implementation 'com.binioter:guideview:1.0.0'
截止我发博客,当前开源库的版本号是1.0.0
。最新开源库版本请查看开源库的wiki
GuideView的使用
编写用于在高亮区域周围展示的component
public class SimpleComponent implements Component {
@Override public View getView(LayoutInflater inflater) {
LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.layer_frends, null);
ll.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) {
Toast.makeText(view.getContext(), "引导层被点击了", Toast.LENGTH_SHORT).show();
}
});
return ll;
}
@Override public int getAnchor() {
return Component.ANCHOR_BOTTOM;
}
@Override public int getFitPosition() {
return Component.FIT_END;
}
@Override public int getXOffset() {
return 0;
}
@Override public int getYOffset() {
return 10;
}
}
展示引导蒙层,并监听蒙层展示、隐藏事件
public void showGuideView() {
GuideBuilder builder = new GuideBuilder();
builder.setTargetView(header_imgbtn)
.setAlpha(150)
.setHighTargetCorner(20)
.setHighTargetPadding(10);
builder.setOnVisibilityChangedListener(new GuideBuilder.OnVisibilityChangedListener() {
@Override
public void onShown() {
}
@Override
public void onDismiss() {
showGuideView2();
}
});
builder.addComponent(new SimpleComponent());
guide = builder.createGuide();
guide.show(SimpleGuideViewActivity.this);