Android在谷歌付费中绘制自定义视图

Pem*_*ang 5 java android android-custom-view android-layout kotlin

缺口图像

这个问题已经被问到,这里已经接受了答案,但接受的答案并不是我想要的.我想使用一个自定义视图,其中缺口占用视图的宽度+一些边距,如上图中的付费图标.虽然寻找到它拥有一个晶圆厂像bottomappbar 这个 我看到了一个叫做类边缘治疗类我想这可以作为很好.我不会发布我的自定义视图代码,因为我可以绘制的是一个矩形.

ami*_*phy 6

您需要使用绘制曲线Cubic Bézier Curve.Bartosz Ciechanowski 在这里写了一篇很好的文章来了解如何绘制这样的曲线.

在此输入图像描述

我开发了一个View绘制像谷歌付款继承的形状FrameLayout.源代码在其github存储库中可用(但尚未记录!).但是,请将以下行添加到您的应用级build.gradle文件中:

repositories {
    jcenter()
}

dependencies {
    implementation 'com.aminography:beziercurvebulgelayout:1.0.2'
}
Run Code Online (Sandbox Code Playgroud)

然后您可以在xml布局文件中使用它,如下所示:

<com.aminography.view.BezierCurveBulgeLayout
    android:id="@+id/bulgeLayout"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    app:bulgeType="bulge"
    app:bulgeColor="@color/colorPrimary"
    app:curveWidth="32dp"
    app:flatWidth="56dp"
    app:flatHeight="24dp">

    <android.support.v7.widget.AppCompatImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@android:drawable/ic_menu_compass"/>

</com.aminography.view.BezierCurveBulgeLayout>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 .

它的形状和颜色可以通过更改以下属性来定制以实现目标形状:

在此输入图像描述