关于蒙层提示,新手引导层,我见过很多APP的做法是简单粗暴直接用一个完整的图层盖着展示的,根本看不到底层,这样做虽然简单,但我认为这并不是蒙层提示的效果
还有就是用带透明背景的提示图层的, 支付宝的一些提示就是这么干的,这样可以透到底层,但指向的位置和展示的控件或多或少都跟底部所展示的控件有所出入,当提示层消失展示出底层的页面时,总会有一个过渡感,简单点说就是所指向的控件不是当前所展示的控件,而是一个替身,出于用户体验,这也是我不采用的原因
我想要的用户体验类似“无感支付”,就是将控件抠出来,提示指向的既是页面中真实展示的控件,这样蒙层消失后用户的焦点感觉就会如德芙般纵享丝滑。
接下来说一说用法,功能都在HintView这个类里,主要方法有:
1、setTargetView(); 将所要指向的目标view传进去,里面会自动对目标view大小与坐标进行测量,然后在蒙层上复制抠出一个完全透明的view,即可完全展示出底层的目标view 。
2、setCustomGuideView(); 就是将所要提示的带有提示语和箭头的布局view传进,里面会根据所setDirction()设置的方向和setOffset(); X轴、Y轴的偏移量将改布局进行排版展示。
3、setMoreTransparentView(); 传其他需要抠图的控件,需要展示出来的控件里面一并给抠出来
4、setShape();设置抠图的形状,有圆形,矩形,椭圆形
5、setOutsideShape(); 设置绘制目标控件的外围形状,一样可以绘制圆形,矩形,椭圆形
6、setOutsideSpace(); 设置外围与目标控件的间隔
7、setRadius(); 设置抠出目标控件的圆角,应与目标控件圆角一致
8、setDotted(); 设置围围形状图的虚线实线
9、setCancelable(); 设置是否点击屏幕消失
项目里还使用了带阴影背景的LCardView 和 自定义圆角图片控件RoundedImageView
在使用时需要注意:当目标控件完全展示出来后再调用展示提示的方法,因为里面需要使用目标控件的信息,目标控件要展示后才能获取到宽高、坐标等信息。