Android收据/ zigzag drawable/layout

guy*_*y_m 8 android android-drawable

我需要在Android中创建收据布局.这个想法很简单,一个带有锯齿形底边的矩形布局.

最好的结果是具有固定锯齿形尺寸(意味着固定的半三角形尺寸)的可绘制/布局,它将实时地根据形状的实际宽度乘以三角形的数量.如果需要,可以使用剪辑三角形.

这是一个很好的例子(编辑:我指的是底部之字形线):

在此输入图像描述

我实际上并不知道如何创建它.想到9补丁,但似乎不合适.想到列表层可绘制水平偏移可能..

也许有可能创建一个带有单独缩放部分的9补丁,以保持之字形的宽高比...这也可以.

编辑 - 答案 使用@Luksprog的评论,我轻松地重新创建了我想要的东西.
这是一些代码:

图像(请注意,高度对应于源图像大小):

    <ImageView
        android:id="@+id/zigzag_bottom"
        android:layout_width="match_parent"
        android:layout_height="12dp"
        android:adjustViewBounds="true"
        android:scaleType="fitXY"
        android:src="@drawable/zigzag" />    
Run Code Online (Sandbox Code Playgroud)

绘制:

    <?xml version="1.0" encoding="utf-8"?>
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/ic_zigzag"
        android:tileMode="repeat"
        android:antialias="true"
    />
Run Code Online (Sandbox Code Playgroud)

Luk*_*rog 4

您无法为该图像创建九条路径,因为无法在垂直或水平一侧定义可拉伸区域。要获得锯齿形图案,您可以提取锯齿形牙齿之一(及其背景阴影)并将其包装在BitmapDrawable具有tileMode在可绘制边界内重复包装图像的属性的属性中。这样,锯齿形的牙齿就会重复出现,您就可以组成图案了。

请注意,高度对应于源图像大小

这是一个令人高兴的场景,但您可以使其适用于高度不匹配的情况。例如,您可以将锯齿形包装BitmapDrawable在 a 中LayerDrawable(以及实际的视图可绘制对象(对于视图区域的其余部分)),然后用于setLayerInset()将可绘制对象放置在底部。您还可以创建自己的可绘制对象,通过重写 onDraw() 方法将之字形图案图像放置在底部。

  • 请看一下问题...答案就在那里(已编辑):) (2认同)