How can I make sine wave on an Imageview in androi

2019-06-14 12:20发布

问题:

I want to create image similar to this.

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

回答1:

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



回答2:

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>



回答3:

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 image