我开发了自定义舍入LinearLayout
,我想添加1px边框。
这是我的代码:
public class MyLinearLayout extends LinearLayout {
private float radius;
private Path path = new Path();
private RectF rect = new RectF();
public MyLinearLayout(Context context)
{
super(context);
radius = 20;
setWillNotDraw(false);
}
@Override
protected void onDraw(Canvas canvas) {
path.reset();
rect.set(0, 0, canvas.getWidth(), canvas.getHeight());
path.addRoundRect(rect, radius, radius, Direction.CCW);
// Add 1px border RED here ?
path.close();
canvas.clipPath(path);
}
}
感谢您的帮助。
答案 0 :(得分:1)
如果仔细查看自定义LinearLayout
中的圆角,您可能会看到半径不平滑。这是因为系统限制不支持Paths
上的抗锯齿。
来自Erik Burke的一个很棒的tutorial关于如何正确创建带圆角的Views
。基本上,您将创建一个屏幕外Bitmap
,绘制RoundRectangle
,并使用Alpha合成技术将屏幕外Bitmap
与自定义LinearLayout
{{1 }}' Canvas
。
就边框而言,您可以将Bitmap
设置为Paint.Style.FILL_AND_STROKE
来绘制边框。