How can I make sine wave on an Imageview in androi

2019-06-14 11:29发布

I want to create image similar to this.

CardView Item

Is it possible to be done in XML? If not, how would I scale an image that is shape like this?

3条回答
beautiful°
2楼-- · 2019-06-14 12:09

Yes it's possible , you can use vactor drawable for it

    <?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="640dp"
android:height="640dp"
android:viewportWidth="640"
android:viewportHeight="640">

<path
    android:fillColor="#000000"
    android:fillAlpha="0"
    android:strokeColor="#000000"
    android:strokeWidth="1"
    android:pathData="" />
<path
    android:fillColor="#000000"
    android:fillAlpha="0"
    android:strokeColor="#000000"
    android:strokeWidth="1"
    android:pathData="" />
<path
    android:fillColor="#000000"
    android:strokeWidth="1"
    android:pathData="M0 640L637.5 640L637.5 519.77C528.33 483.94 424.58 482.69 326.25 516.02C227.91 549.35 119.17 545.6 0 504.77L0 640Z" />
<path
    android:fillColor="#000000"
    android:fillAlpha="0"
    android:strokeColor="#000000"
    android:strokeWidth="1"
    android:pathData="M0 640L637.5 640L637.5 519.77C528.33 483.94 424.58 482.69 326.25 516.02C227.91 549.35 119.17 545.6 0 504.77L0 640Z" />
<path
    android:fillColor="#000000"
    android:fillAlpha="0"
    android:strokeColor="#000000"
    android:strokeWidth="1"
    android:pathData="M0 640L637.5 640L637.5 519.77C528.33 483.94 424.58 482.69 326.25 516.02C227.91 549.35 119.17 545.6 0 504.77L0 640Z" /></vector>

like this imageenter image description here

查看更多
小情绪 Triste *
3楼-- · 2019-06-14 12:16

It is achieve by Canvas.drawPath to draw any path on your canvas. To draw sine path, you have to step through the function values of the sine with a small delta and add each point to the path with Path.lineTo.

For more reference... https://developer.android.com/reference/android/graphics/Path.html#lineTo%28float,%20float%29

查看更多
男人必须洒脱
4楼-- · 2019-06-14 12:20

i have something that's similar to this not exactly the same.hope this may help you

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:height="50dp"
    android:gravity="bottom">
    <shape android:shape="rectangle">
        <solid android:color="#ffff0000" />
    </shape>
</item>
<item
    android:width="500dp"
    android:height="60dp"
    android:gravity="bottom|center_horizontal"
    android:top="-0dp">
    <shape android:shape="oval">
        <solid android:color="#ffffffff" />
    </shape>
</item>
<item
    android:height="20dp"
    android:bottom="30dp"
    android:gravity="bottom">
    <shape android:shape="rectangle">
        <solid android:color="#ffffffff" />
    </shape>
</item>

查看更多
登录 后发表回答