我将分享下面的图片,我想在原生 Android 中开发我的消息气泡
我已经在 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>
请帮助我如何制作第一张图片。
谢谢
最佳答案
您可以使用 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()
)
您还可以自定义边的形状,扩展 EdgeTreatment
并覆盖 getEdgePath
方法。
注意:至少需要 Material 组件库的 1.2.0
版本。
关于java - 消息气泡自定义绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64399682/