2017-07-12 7 views
0

Ich möchte eine benutzerdefinierte Ansicht mit einem Häkchen in einem Kreis erstellen. Siehe Bild unten.Benutzerdefinierte Ansicht zeichnen

Zeichnung Kreis wäre einfach. Ich brauche einen Vorschlag zum Zeichnen des Häkchens.

Jede Hilfe wird geschätzt.

enter image description here

+0

Sie aussehen könnte, in dem Vektor Drawables Pfad verwenden. –

Antwort

1

Wenn Sie eine benutzerdefinierte Ansicht erstellen keine spezielle Anforderung haben, empfehle ich einfach einen Vektor ziehbar:

<?xml version="1.0" encoding="utf-8"?> 
<vector 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:width="24dp" 
    android:height="24dp" 
    android:viewportWidth="24.0" 
    android:viewportHeight="24.0"> 

    <path 
     android:pathData="M0 12a12 12 0 1 1 0 0.01z" 
     android:fillColor="#8ab88c"/> 

    <path 
     android:pathData="M5.25 12l4.5 4.5l9 -9" 
     android:strokeColor="#ffffff" 
     android:strokeWidth="2.5"/> 

</vector> 

Das erste <path> Element verwendet den elliptischen Bogen Befehl, um den Kreis und die zweite ziehen verwendet zwei "Lineto" -Befehle, um den Check zu zeichnen.

Dies kann innerhalb einer ImageView mit beliebigen Dimensionen verwendet werden, die Sie möchten, und wird schön skalieren.

Wenn Sie eine benutzerdefinierte Ansicht implementieren müssen, würde ich die gleiche allgemeine Technik in meiner onDraw() Implementierung verwenden:

@Override 
protected void onDraw(Canvas canvas) { 
    rectF.set(getLeft(), getTop(), getRight(), getBottom()); 
    canvas.drawOval(rectF, fillPaint); 

    float checkmarkWidth = getWidth() * 0.5626f; 
    float delta = checkmarkWidth/3.0f; 

    float initialX = (getWidth() - checkmarkWidth)/2.0f; 
    float initialY = getHeight()/2.0f; 

    path.reset(); 
    path.moveTo(initialX, initialY); 
    path.rLineTo(delta, delta); 
    path.rLineTo(2 * delta, -2 * delta); 

    strokePaint.setStrokeWidth(getWidth()/9); 
    canvas.drawPath(path, strokePaint); 
} 
0

Mit LayerDrawable können Sie eine Reihe von Drawables ziehen, wo das Element mit dem größten Index wird oben gezogen werden.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/circle" /> 
    <item android:drawable="@drawable/check" /> 
</layer-list> 

Oder können Sie ein VectorDrawable verwenden, direkt am ziehbar Ordner klicken> neu> Vektor-asset> Symbol> Suche „Kontrollkreis“.

Verwandte Themen