削减部分XML形状

时间:2016-12-18 09:50:43

标签: java android xml android-shapedrawable

我在XML中有一个矩形形状视图:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle"> 

        <solid android:color="@color/lightblue"/> 
    </shape>

我想要的是把它切成两半,所以结果看起来像: enter image description here

有可能吗?如果是的话,我该如何实现呢?

注意:

1)添加旋转的白色矩形不是解决方案。我需要保持蓝色形状的切割区域透明(在它下面有更多的视图层)。

2)rect的左下角有点圆(我忘记在上面的图片中绘制)。

2 个答案:

答案 0 :(得分:1)

像这样使用ShapeDrawable

Drawable d = new ShapeDrawable(new S(Color.BLUE, 32));

其中,类S是自定义Shape

class S extends Shape {
    final int color;
    final float radius;
    Path path = new Path();

    public S(int color, float radius) {
        this.color = color;
        this.radius = radius;
    }

    @Override
    protected void onResize(float width, float height) {
        path.reset();
        path.moveTo(0, 0);
        path.lineTo(width, height);
        path.lineTo(radius, height);
        RectF oval = new RectF(0, height - 2 * radius, 2 * radius, height);
        path.arcTo(oval, 90, 90);
        path.close();
    }

    @Override
    public void draw(Canvas canvas, Paint paint) {
        paint.setColor(color);
        canvas.drawPath(path, paint);
    }
}

现在,您可以在Drawable dView#setBackground()等任何电话中使用TextView#setCompoundDrawables()

答案 1 :(得分:0)

玩游戏,从API 21开始,您可以使用vector drawables

这就是我所做的,根据需要更改数字。 创建了一个可绘制的my_custom_shape.xml作为资源文件

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:height="100dp"
    android:width="100dp"
    android:viewportHeight="100"
    android:viewportWidth="45" >
    <group
        android:name="triableGroup">
        <path
            android:name="triangle"
            android:fillColor="#000"
            android:pathData="m 0,0 l 50,100 -50,0 z" />
    </group>
</vector>

out put:

enter image description here

并在View中将其设置为背景android:background="@drawable/my_custom_shape"

注意:忘记尝试使用px代替dp,看看有助于为每台设备保持相同的尺寸,请尝试查看