gpt4 book ai didi

具有透明元素的Android View 背景颜色

转载 作者:行者123 更新时间:2023-11-29 00:25:29 32 4
gpt4 key购买 nike

我们可以像这样使用 Shape 轻松制作背景透明和彩色元素:

  • 蓝色:纯色
  • 白色/灰色方形:透明

enter image description here

<shape 
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners
android:radius="20dp"/>
<solid
android:color="#1f93ed" />
</shape>

但是我怎样才能像这样用彩色背景和透明元素做一个 View 背景:

enter image description here

好像背景色被表格打洞了...有什么想法吗?

最佳答案

您可以在自定义可绘制对象或 View 中通过覆盖 onDraw 绘制自己的彩色区域。

例如,在这段代码中我绘制了四个“角轮廓”:

@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
drawCorner(cornerSizeInPixel, canvas, Color.GREEN));
}

private void drawCorner(int size, Canvas canvas, int color)
{
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(color);
paint.setStyle(Style.FILL);

// top left
Path p = new Path();
p.moveTo(0, 0);
p.lineTo(size, 0);
p.arcTo(new RectF(0, 0, size, size), 180, 90, true);
p.lineTo(0, 0);
canvas.drawPath(p, paint);

// bottom left
int h = canvas.getHeight();
p = new Path();
p.moveTo(0, h);
p.lineTo(size, h);
p.arcTo(new RectF(0, h - size, size, h), 90, 90, true);
p.lineTo(0, h);
canvas.drawPath(p, paint);

// top right
int w = canvas.getWidth();
p = new Path();
p.moveTo(w, 0);
p.lineTo(w - size, 0);
p.arcTo(new RectF(w - size, 0, w, size), 270, 90, true);
p.lineTo(w, 0);
canvas.drawPath(p, paint);

// bottom right
p = new Path();
p.moveTo(w, h);
p.lineTo(w - size, h);
p.arcTo(new RectF(w - size, h - size, w, h), 0, 90, true);
p.lineTo(w, h);
canvas.drawPath(p, paint);
}

结果:图像的每个角落都有4个绿色表格,它们一起画出一个非常透明的圆角矩形

关于具有透明元素的Android View 背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19951597/

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