Java 消息气泡自定义绘图

Java 消息气泡自定义绘图,java,android,material-components-android,android-shapedrawable,Java,Android,Material Components Android,Android Shapedrawable,我将分享下面的图片,我想在原生Android中开发我的消息泡泡 我已经用自定义可绘制XML编写了一些代码,请看一看,我将分享图像的外观,首先看代码: <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <rotate android:fromDegrees="55" androi

我将分享下面的图片,我想在原生Android中开发我的消息泡泡

我已经用自定义可绘制XML编写了一些代码,请看一看,我将分享图像的外观,首先看代码:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item>

    <rotate
        android:fromDegrees="55"
        android:pivotX="100%"
        android:pivotY="0%"
        android:toDegrees="0">
        <shape android:shape="rectangle">
            <corners android:radius="10dp" />
            <solid android:color="#00A1E4" />
        </shape>
    </rotate>
</item>
<item android:right="28dp">
    <shape android:shape="rectangle">
        <solid android:color="#00A1E4" />
        <corners android:radius="10dp" />
    </shape>
</item>

上面的代码如下所示

请帮助我如何制作第一张图片


谢谢

您可以使用
ShapeAppearanceModel
将自定义
边缘处理
应用于eAxPle a
CardView的小部件:

    <LinearLayout
        android:padding="8dp"
        android:clipChildren="false"
        android:clipToPadding="false"
        ...>

       <com.google.android.material.card.MaterialCardView
          android:id="@+id/cardview"
          android:layout_height="100dp"
          app:cardCornerRadius="24dp"
          app:cardBackgroundColor="@color/..."/>

    </LinearLayout>

您还可以自定义扩展
EdgeTreatment
并覆盖
getEdgePath
方法的边的形状

注意:它至少需要材料组件库的版本
1.2.0

    val markerEdgeTreatment = MarkerEdgeTreatment(cardview.radius)
    val offsetEdgeTreatment = OffsetEdgeTreatment(markerEdgeTreatment, 90f)

    cardview.setShapeAppearanceModel(
        cardview.getShapeAppearanceModel()
            .toBuilder()
            .setRightEdge(offsetEdgeTreatment)
            .build()
    )