公司的项目要做一个引导页,同事使用了NewbieGuide,测试人员发现背景不是半透明的,像是全黑的,把问题抛给了我。看了一下代码,问题大概是ui给的引导页图片是半透明带遮罩的效果,叠加了控件本身的半透明导致看起来像是全黑的。但是代码里面同事使用了setBackgroundColor(Color.TRANSPARENT),应该是想让控件的遮罩为透明,明显不起作用。我去github里看了一下使用backgroundColor的地方,在GuideLayout里面的onDraw函数
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int backgroundColor = guidePage.getBackgroundColor();
canvas.drawColor(backgroundColor == 0 ? DEFAULT_BACKGROUND_COLOR : backgroundColor);
drawHighlights(canvas);
}
里面有个backgroundcolor是否等于0的判断,而transparent的color值是#00000000,我不知道这个值代表多少,猜测是不是#00000000的值是0导致遮罩使用的是默认的背景颜色,于是我设置了自定义的transparent颜色为#00000001,将这个颜色设置为backgroundcolor,然后问题就解决了。