Es ist nicht ganz klar, was die Anforderungen an die Form des Bogens sind, aber man könnte die oben mit einem VectorDrawable zu erreichen:
arc.xml
(in res/Drawables /)
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="223dp"
android:height="237dp"
android:viewportWidth="223"
android:viewportHeight="237">
<path
android:fillColor="#757491"
android:strokeWidth="1"
android:pathData="M44,3 L0,228 C0,228 68,239 114,236 C151,236 223,221 223,221 L197,0
C197,5.68434189e-14 158,11.7434499 120,11 C82,10.2565501 44,3 44,3 Z" />
</vector>
Dann, wie Sie oben haben:
<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/arc">
</LinearLayout>
Beachten Sie, dass es Plattform Einschränkungen sind, wenn VectorDrawables (API 21+), oder Sie können die Support-Bibliothek verwenden, um die Funktionalität zu zurückzuportieren wenn Sie früher API-Ebenen unterstützen müssen.
Wie habe ich den obigen Code gemacht? Ich zeichnete die Form in einem Vektorpaket (Sketch/Illustrator/etc) auf und exportierte sie als svg
Datei. Ich benutzte dann das sehr handliche Werkzeug bei , um es in VectorDrawable-Code zu konvertieren.
Wenn Sie etwas dynamischere dann würde ich persönlich erstellen Sie einfach eine benutzerdefinierte Drawable
in Java und mit Path
auf Canvas
ziehen, aber sie zeigen Sie dies nicht tun wollen.