Android收据/ zigzag drawable / layout

时间:2014-10-18 15:45:34

标签: android android-drawable

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

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

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

enter image description here

我实际上并不知道如何创建它。想到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" />    

绘制:

    <?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"
    />

2 个答案:

答案 0 :(得分:3)

您无法为该图像创建九条路径,因为无法在垂直或水平方向上定义可伸展区域。要获得Z字形图案,您可以提取其中一个之字形牙齿(以及它的背景阴影)并将其包裹在BitmapDrawable中,该tileMode具有BitmapDrawable属性,用于重复在drawable边界内包装图像。通过这种方式,将重复锯齿形,并且您将构成该模式。

  

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

这是一个快乐的场景,但是当高度不匹配时,你可以使它适用于这种情况。例如,您可以将zig-zag LayerDrawable包裹在setLayerInset()中(以及实际的可绘制视图(对于视图区域的其余部分)),然后使用{{1}}放置drawable在底部。您还可以创建自己的drawable,通过覆盖onDraw()方法将Zig-zag图案图像放在底部。

答案 1 :(得分:0)

您可以使用用于此目的的ZigzagView。它支持上/下/左/右的锯齿形效果,并带有阴影。

添加其依赖项并加以利用:

'com.github.beigirad:ZigzagView:VERSION'
<ir.beigirad.zigzagview.ZigzagView
    android:layout_width="match_parent"
    android:layout_height="240dp"
    app:zigzagBackgroundColor="#8bc34a"
    app:zigzagElevation="8dp"
    app:zigzagHeight="10dp"
    app:zigzagShadowAlpha="0.9"
    app:zigzagSides="top|bottom|right|left"
    app:zigzagPaddingContent="16dp">
    
    // add child view(s)
    
</ir.beigirad.zigzagview.ZigzagView>

preview

reference