当前位置: 首页 > 知识库问答 >
问题:

如何在android中用xml制作两种颜色的可绘制矩形?

仇浩旷
2023-03-14

我想通过在android中使用xml来制作类似的东西。我用45度的渐变实现了类似的效果,但我不想要渐变,而是像这样的素色。非常感谢您的任何建议。提前谢谢。

这就是我想用xml做的。

我需要很多这样的,所以我不能在绘图文件夹中加载位图。] 1

共有3个答案

宓昂雄
2023-03-14

我不知道这在XML中是否可行。在Java中,一种可能的方法是创建一个形状,并用它构建一个ShapeDrawable。

两个三角形可绘制。JAVA

public class TwoTrianglesDrawable extends ShapeDrawable {

    public TwoTrianglesDrawable(){
        super();
        setShape(new TwoTrianglesShape());
    }

    private class TwoTrianglesShape extends Shape {

        @Override
        public void draw(Canvas canvas, Paint paint) {

            Path path = new Path();
            path.setFillType(Path.FillType.INVERSE_EVEN_ODD);
            Path path1 = new Path();
            path1.setFillType(Path.FillType.INVERSE_EVEN_ODD);

            paint.setStrokeWidth(0);
            paint.setStyle(Paint.Style.FILL);
            paint.setAntiAlias(true);

            paint.setColor(Color.YELLOW);

            Point a = new Point(0, 0);
            Point b = new Point(0, (int) getHeight());
            Point c = new Point((int)getWidth(), (int)getHeight());

            path.moveTo(a.x, a.y);
            path.lineTo(b.x, b.y);
            path.lineTo(c.x, c.y);
            path.close();
            canvas.drawPath(path, paint);

            paint.setColor(Color.BLUE);

            Point a1 = new Point(0, 0);
            Point b1 = new Point((int)getWidth(),0);
            Point c1 = new Point((int)getWidth(), (int)getHeight());

            path1.moveTo(a1.x, a1.y);
            path1.lineTo(b1.x, b1.y);
            path1.lineTo(c1.x, c1.y);
            path1.close();
            canvas.drawPath(path1, paint);

        }
    }
}

例如,使用RelativeLayout作为背景:

RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout);

ShapeDrawable background = new TwoTrianglesDrawable();
layout.setBackground(background);//Requires API 16 or higher.
岳亮
2023-03-14

下面的答案是无耻地从这里复制的,如何在android中制作渐变背景

试试这个:

<gradient
    android:angle="90"   //you need to change angle as per your needs (270 might work in your case)
    android:centerColor="#555994"  //try playing with colors of start, center and End colors to get desired result. also try removing some.
    android:endColor="#b5b6d2"
    android:startColor="#555994"
    android:type="linear" />

<corners 
    android:radius="0dp"/>

要使用上述代码,您需要制作一个可绘制的。xml文件,复制

谢谢。

贺雪松
2023-03-14

可以使用Android PathShape类绘制两个所需颜色的三角形

 类似资料:
  • 问题内容: 这是我在stackoverflow.com上遇到的第一个问题,所以请原谅我做错了什么。 我想创建一个基本上像进度条的圆圈。现在,我想通过一些代码设置百分比。 我想要实现的是:https : //raw.github.com/psud/Melde-App/master/res/drawable- hdpi/circlemiddle.png 我的问题: 无法使用两种颜色的圆圈工作(已经在论

  • 我用画布在上面画了多个纹理。这些纹理是长方形,现在我想使用这些纹理与他们的部分不可缺少的,所以我可以绘制背景颜色背后的纹理有相同的纹理与不同的颜色,而不是添加相同的图片与不同的颜色。我尝试像这样添加Rects: 每个坐标代表一个纹理,xS和yS值是屏幕上的位置,例如,坐标11可以具有xS=0yS=0和21xS=48(48=texturesize)yS=0。我用ShapeDrawable和Recta

  • 我想知道我们如何创建从图像中提取颜色的渐变叠加。 就像雷索主场球员一样。

  • 问题内容: 我正在尝试将十六进制值转换为int,以便创建新的可绘制颜色。我不确定是否可以,但是根据文档,应该可以。它明确地要求 公共ColorDrawable(int颜色) 在API级别1中添加。创建具有指定颜色的新ColorDrawable。 参数 color 绘制的颜色。 因此,我的代码无法正常工作,因为我收到一个无效的int:“ FF6666”错误。有任何想法吗? 问题答案: 因为您在谈论十

  • 问题内容: 当混合蓝色和黄色油漆时,结果是某种绿色。 我有两种rgb颜色: 蓝色=(0,0,255) 黄色=(255,255,0) 找到两种颜色混合使用时产生的rgb颜色的算法是什么(就像使用油漆时会出现的一样)?该算法产生的颜色不必十分精确。对于上面的示例,它只需要看起来像某种绿色即可。 提前致谢。 编辑: 根据LaC的回答,用Go编写的此功能对我有用。 编辑#2 虽然如此,但设法将青色和黄色混

  • 我正在尝试为我的应用程序的主题定义自定义颜色。我是这样做的: 定义自定义属性: 定义应用程序样式: 在清单中设置样式: 在可绘制xml中使用此属性: 但出于某种原因,它不适用于我的颜色绘图。它应用了透明的颜色。 还有一件奇怪的事,如果我替换我的与,在,则应用正确的颜色。 最后一个问题是:你知道为什么它不起作用,以及如何修复它吗?