Search code examples
androidimageviewandroid-imageviewrounded-cornersandroid-framelayout

How could I do a special round corner shape for ImageView/FrameLayout?


As you can see here I try to make round corners for my FrameLayout. Here is my rounded_shape.xml shape:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <solid android:color="@android:color/transparent"/>
    <stroke android:width="@dimen/margin"
            android:color="@color/colorBackground"/>
    <corners android:radius="24dp" />
</shape>

which looks then so: rounded_shape.xml Preview

When I do in my code: frameLayout.setBackground(new BitmapDrawable(getResources(), bitmapPhoto.bitmap)); frameLayout.setForeground(getResources().getDrawable(R.drawable.rounded_shape)); it will look like this: result on app

You can see the black edges through the rounded corners.

How can I do a shape like this: where the the edges are rounded and the black parts are gone already


Solution

  • I did two shapes parallel.

    • One shape with round corners, doing the inner corner round.
    • One shape with pointed corners, doing the outer corner sharp

    All structed in a layer-list as you can see in the following:

    <?xml version="1.0" encoding="UTF-8"?>
    <layer-list>
        <item>
            <shape xmlns:android="http://schemas.android.com/apk/res/android"
                android:shape="rectangle">
                <solid android:color="@android:color/transparent" />
                <stroke
                    android:width="@dimen/margin"
                    android:color="@color/color" />
                <corners android:radius="24dp" />
            </shape>
        </item>
        <item>
            <shape xmlns:android="http://schemas.android.com/apk/res/android"
                android:shape="rectangle">
                <solid android:color="@android:color/transparent" />
                <stroke
                    android:width="@dimen/margin"
                    android:color="@color/color" />
            </shape>
        </item>
    </layer-list>