PopupMenuView icon indicating copy to clipboard operation
PopupMenuView copied to clipboard

这个项目现在在android P适配有问题

Open nadazero opened this issue 7 years ago • 5 comments

作者你好,这个项目现在在android P上显示有问题,如下图所示,箭头图标没有了。 2018-09-19_160254

不知您最近是否有为android P适配的计划。 如果没有,有可能我会自行适配。

nadazero avatar Sep 19 '18 08:09 nadazero

default 拿demo做了下调查,编译的版本设置为android P对应的API 28。 加了一些额外代码发现如图的现象。 说明canvas描画path还是有效的,问题似乎出在Xfermode没起作用,DST_IN没有把path之外的背景给去除掉。

nadazero avatar Sep 28 '18 07:09 nadazero

@nadazero 你好,我也遇到了上述问题。请问最终如何解决的?非常感谢能提供帮助

GodJiong avatar Dec 13 '18 12:12 GodJiong

最终如何解决的?

wangshuwen1107 avatar Jul 19 '19 09:07 wangshuwen1107

相似的问题 https://github.com/GcsSloop/rclayout/issues/37

lambor avatar Mar 03 '20 07:03 lambor

需要将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);

haydardsx avatar Apr 30 '24 05:04 haydardsx