gpt4 book ai didi

java - 布局上 clipPath 的抗锯齿

转载 作者:太空狗 更新时间:2023-10-29 16:13:15 24 4
gpt4 key购买 nike

我有一个布局,里面有几个 View ——工具栏、recyclerview 和几个分隔符(它们是简单的 View ,高度为 2dp,宽度为 match_parent)。我想在布局上放置一个 mask ——其中最重要的部分是整个布局的圆角(而不是 View 本身)。我决定用重载的 dispatchDraw 函数创建我自己的 LinearLayout 类,我设法得到了不错的结果……除了一件事——那些角没有抗锯齿。

tl;dr 有没有什么方法可以将抗锯齿添加到 clipPath 函数中?我知道可以在 Paint 中打开它,然后使用 xfermodes 来遮盖布局,但是我不知道如何绘制 mask 然后绘制其他所有内容(不知道里面到底是什么)。

这是我的布局代码(类名、简单构造函数和 Path 字段除外):

@Override protected void dispatchDraw(Canvas canvas) {
if (path == null) {
path = new Path();
float margin = MyApplication.getInstance().getMetrics().density * 5;
path.addRoundRect(new RectF(margin,margin,getWidth()-margin, getHeight()-margin),
margin*2, margin*2, Path.Direction.CW);
}
canvas.clipPath(path);
super.dispatchDraw(canvas);
}

@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}

最佳答案

尝试 this SO answer ,当然不是 mMask.draw(canvas),它是由 NinePatchDrawable 制作的“ mask ”,您需要调用 canvas.drawPath()Paint 设置为 PorterDuff.Mode.DST_IN xfer 模式

关于java - 布局上 clipPath 的抗锯齿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37748652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com