java - 消息气泡自定义绘图

标签 java android material-components-android android-shapedrawable

我将分享下面的图片,我想在原生 Android 中开发我的消息气泡 Have to make like this

我已经在 Custom Drawable 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>

上面的代码看起来像这样The Above code

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

谢谢

最佳答案

您可以使用 ShapeAppearanceModel 将自定义 EdgeTreatment 应用于小部件,例如 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>

然后您可以使用内置的 MarkerEdgeTreatment 应用自定义 ShapeAppearanceModel,在给定圆的半径的情况下在边缘绘制箭头。像这样的东西:

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

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

enter image description here

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

注意:至少需要 Material 组件库的 1.2.0 版本。

关于java - 消息气泡自定义绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64399682/

相关文章:

java - 如何设置 Tidy 配置不替换 <br> 标签?

java - 在 Java 中将日期增加 18 年

java - 致命异常 : java. lang.VerifyError:来自导入的 jar 文件

android - 当我从 android 中的表中获取数据时,背景屏幕变黑并且我对此无法控制

android - Drawable 不将格式应用于我的按钮

java - 如何禁用 Spring Boot 的 envers 审计

java - java中字符串的正则表达式

android - 添加 Material 依赖项时合并 list 错误

android - 错误 :Execution failed for task ':app:processDebugGoogleServices' . > 请修复版本冲突

Android Material 编辑文本 endIcon