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);
}
Sie aussehen könnte, in dem Vektor Drawables Pfad verwenden. –