PopupMenuView
PopupMenuView copied to clipboard
这个项目现在在android P适配有问题
作者你好,这个项目现在在android P上显示有问题,如下图所示,箭头图标没有了。

不知您最近是否有为android P适配的计划。 如果没有,有可能我会自行适配。
拿demo做了下调查,编译的版本设置为android P对应的API 28。 加了一些额外代码发现如图的现象。
说明canvas描画path还是有效的,问题似乎出在Xfermode没起作用,DST_IN没有把path之外的背景给去除掉。
@nadazero 你好,我也遇到了上述问题。请问最终如何解决的?非常感谢能提供帮助
最终如何解决的?
相似的问题 https://github.com/GcsSloop/rclayout/issues/37
需要将PopLayout底下的draw方法重新写 主要原因是安卓p把paint默认的xfermode改了,改为如下
int layer = canvas.saveLayer(0, 0, getWidth(),
getHeight(), null, Canvas.ALL_SAVE_FLAG);
super.draw(canvas);
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O_MR1) {
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
canvas.drawPath(mPopMaskPath, mPaint);
} else {
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
final Path path = new Path();
path.addRect(0, 0, getWidth(), (int) getHeight(), Path.Direction.CW);
path.op(mPopMaskPath, Path.Op.DIFFERENCE);
canvas.drawPath(path, mPaint);
}
canvas.restoreToCount(layer);