Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:绘制自定义形状_Android_Android Shapedrawable - Fatal编程技术网

Android:绘制自定义形状

Android:绘制自定义形状,android,android-shapedrawable,Android,Android Shapedrawable,我想画一个像这样的自定义形状- 一个选择是在photoshop中单独制作每个形状,然后在编码中使用它,但我想知道,是否可以使用xml绘制这个形状 我应该怎样画这样的形状?不要期望完整的代码,只要给我一些想法或给我指出正确的方向。尝试以下形状可绘制xml: <?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

我想画一个像这样的自定义形状-

一个选择是在photoshop中单独制作每个形状,然后在编码中使用它,但我想知道,是否可以使用xml绘制这个形状


我应该怎样画这样的形状?不要期望完整的代码,只要给我一些想法或给我指出正确的方向。

尝试以下形状可绘制xml:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<!-- Colored rectangle-->
<item>
    <shape android:shape="rectangle">
        <size 
            android:width="100dp"
            android:height="40dp" />
        <solid android:color="#FAD55C" />
    </shape>
</item>

<!-- This rectangle for the left side -->
<!-- Its color should be the same as layout's -->
<item
    android:right="90dp"
    android:left="-30dp">
    <rotate
        android:fromDegrees="45">
        <shape android:shape="rectangle">
            <solid android:color="#ffffff" />
        </shape>
    </rotate>
</item>

<!-- These rectangles for the right side -->
<!-- Their color should be the same as layout's -->
<item
    android:top="-40dp"
    android:bottom="63dp"
    android:right="-25dp">
    <rotate
        android:fromDegrees="45">
        <shape android:shape="rectangle">
            <solid android:color="#ffffff" />
        </shape>
    </rotate>
</item>

<item
    android:top="63dp"
    android:bottom="-40dp"
    android:right="-25dp">
    <rotate
        android:fromDegrees="-45">
        <shape android:shape="rectangle">
            <solid android:color="#ffffff" />
        </shape>
    </rotate>
</item>
</layer-list>

这就是它在白色背景上的外观:

这里有更多的信息

编辑:

下面是如何完成的一个小说明

  • 我们放置一个100 x 40 dp大小的黄色矩形。从现在起,这个矩形可以被视为其他形状的容器。容器的边界被认为是我们将要放置在容器中的形状边界的起点。也就是说,设置形状的
    size
    标记的
    top、bottom、right和left
    属性意味着形状的边界到容器的
    top、bottom、right和left
    边缘的距离(黄色矩形)
  • 例如,如果我们想在黄色矩形的内部放置一个较小的矩形,与每个黄色矩形的边缘之间有一个
    10dp
    间隙,我们将
    顶部、底部、右侧和左侧
    属性设置为新(内部)矩形的
    10dp

  • 为了实现黄色矩形右侧的箭头形状,我们使用两个适当向右移动并旋转的白色矩形。请注意,
    size
    tag属性的值可以为负值,这意味着形状的对应边显示在容器外部。在上一个示例中,如果将
    left
    属性设置为100 dp或更高,则内部矩形不会显示,因为它将位于黄色矩形的右边框后面
  • 关于旋转,正值为顺时针,反之为逆时针

  • 对于左侧形状,只需使用一个向左移动(部分位于容器外部)并旋转45度的矩形就足够了
  • 希望这不会让你感到困惑