首先看下我们需要实现的效果:
Paste_Image.png
我们需要制造半透明的灰色蒙层,以及全透明的圆圈来着重显示功能点。当然在图层上的view可以使用各种切图实现不同的效果。
最开始我是通过自定义全屏的DIalog完成这个效果,但是测试发现,自定义的View一直无法绘制全屏,尽管我尝试通过测量手机宽高来绘制全屏的background bitmap,依然无功而返…(应该是写代码的姿势不对)
于是我换成了Activity…
当然我们还需要解决如何在半透明图层上"挖"出一个无背景色的圆。这里就需要依靠 paint.setXfermode()这个方法了。
Xfermode
Xfermode is the base class for objects that are called to implement custom "transfer-modes" in the drawing pipeline. The static function Create(Modes) can be called to return an instance of any of the predefined subclasses as specified in the Modes enum. When an Xfermode is assigned to an Paint, then objects drawn with that paint have the xfermode applied.
这是一种图形混合的模式,它有三个子类,我们主要利用PorterDuffXfermode,根据16条Porter-Duff规则的任意一条来控制