我怎样才能为 ImageView/FrameLayout 做一个特殊的圆角形状?

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

如您所见here 我尝试为我的 FrameLayout 制作圆角。 这是我的 rounded_shape.xml 形状:

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

看起来是这样的: rounded_shape.xml Preview

当我在我的代码中做的时候: frameLayout.setBackground(new BitmapDrawable(getResources(), bitmapPhoto.bitmap)); frameLayout.setForeground(getResources().getDrawable(R.drawable.rounded_shape)); 它看起来像这样: result on app

您可以通过圆角看到黑色边缘。

我怎样才能做这样的形状: where the the edges are rounded and the black parts are gone already

我做了两个平行的形状。

  • 一个带圆角的形状,做内角圆。
  • 一个带尖角的形状,外角尖锐

所有结构都在 layer-list 中,如下所示:

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