Ich möchte jedes Bild von mir ImageView
kreisförmig mit einem Rand machen.
Ich habe gesucht, aber keine nützlichen Informationen gefunden (alles, was ich versucht habe, hat nicht funktioniert).
Wie kann ich dies durch XML erreichen: Erstellen Sie eine ImageView
mit bestimmten src und machen Sie es kreisförmig mit einem Rand?
Antworten:
Sie können einen einfachen Kreis mit weißem Rand und transparentem Inhalt mit Form erstellen.
Machen Sie dann eine Ebenenliste zeichnbar und fügen Sie sie als Hintergrund für Ihre Bildansicht ein.
und fügen Sie es als Hintergrund für Ihre Bildansicht ein.
Du wirst so etwas haben.
quelle
Dies ist das einfachste Weg, den ich entworfen habe. Versuche dies.
Wenn Sie an Android-Versionen über Lollipop arbeiten
Hinzufügen eines Rahmens zur runden ImageView - NEUESTE VERSION
Wickeln Sie es mit einem anderen CardView ein, das etwas größer als das innere ist, und stellen Sie die Hintergrundfarbe ein, um Ihrem runden Bild einen Rand hinzuzufügen. Sie können die Größe der äußeren CardView erhöhen, um die Dicke des Rahmens zu erhöhen.
quelle
Ich hoffe, dies wird dir helfen.
1) CircleImageView
Vergessen Sie nicht die Implementierung: Gradle Scripts> build.gradle (Modul: App)> Abhängigkeiten
Eine vollständige Beschreibung finden Sie hier: Die Quelle hier.
2) CircularImageView
Vergessen Sie nicht die Implementierung: Gradle Scripts> build.gradle (Modul: App)> Abhängigkeiten
Eine vollständige Beschreibung finden Sie hier: Die Quelle hier.
quelle
Mit Hilfe von glide Bibliothek und RoundedBitmapDrawableFactory Klasse ist es leicht zu erreichen. Möglicherweise müssen Sie ein kreisförmiges Platzhalterbild erstellen.
Glide V4:
Glide V3:
Für Picasso RoundedTransformation ist dies eine wirklich großartige Lösung, die eine zusätzliche Option zum Runden von Bildern am oberen oder unteren Rand bietet.
quelle
Glide.with(context).load(imgUrl).apply(new RequestOptions().centerCrop()) .into(imageView)
.apply(RequestOptions.circleCropTransform())
GlideApp
in einer Anwendung konfiguriert :GlideApp.with(this).load(url).circleCrop().into(imageView);
.Die oben genannten Methoden scheinen nicht zu funktionieren, wenn Sie das
src
Attribut verwenden. Was ich getan habe, ist, zwei Bildansichten in einem Rahmenlayout wie folgt übereinander zu platzieren:Legen Sie einfach eine Circular_Crop.png in Ihren Zeichenordner, die die Form Ihrer Bildabmessungen (in meinem Fall ein Quadrat) mit einem weißen Hintergrund und einem transparenten Kreis in der Mitte hat. Sie können dieses Bild verwenden, wenn Sie eine quadratische Bildansicht wünschen.
Laden Sie einfach das Bild oben herunter.
quelle
Das Folgende ist eine der einfachsten Möglichkeiten, verwenden Sie den folgenden Code:
Abhängigkeiten
XML-Code
Bildschirmfoto:
Quelle: Circular ImageView GitHub Repository
quelle
Dies wird den Trick tun:
rechteck.xml
circle.xml
profile_image.xml (Die Ebenenliste)
Ihr Layout
quelle
Verwenden Sie einfach die
ShapeableImageView
von der Material Components Library bereitgestellten.Etwas wie:
mit:
Hinweis: Es ist mindestens die Version erforderlich
1.2.0-alpha03
.quelle
Sie können CardView einfach ohne externe Bibliothek verwenden
quelle
Ich benutze shape = "oval" anstelle des "Rings" unten. Es hat bei mir funktioniert. Um das Bild in Grenzen zu halten, verwende ich
<padding>
und setze<adjustViewBounds>
es in meinem auf true<ImageView>
. Ich habe es mit Bildern mit einer Größe zwischen 50 x 50 px und 200 x 200 px versucht.quelle
android:scaleType="fitCenter"
@Jyotman Singh, die Antwort ist sehr gut (für solide Hintergründe), daher möchte ich sie verbessern, indem ich Vektorzeichnungen teile, die für Ihre Bedürfnisse neu eingefärbt werden können. Dies ist auch praktisch, da die einteilige Vektorform gut skalierbar ist.
Dies ist die Rechteck-Kreis-Form (@ drawable / shape_round_profile_pic):
Die Verwendung ist die gleiche:
quelle
GlideApp.with(getApplicationContext()).asBitmap().load(profilePhotoUrl) .circleCrop()
Verwenden Sie einfach diese Codezeilen und Sie sind fertig:
Vergessen Sie nicht zu importieren:
Fügen Sie diese Bibliothek in build.gradle hinzu:
quelle
Versuche dies.
und verwenden Sie diese ImageView im Layout wie folgt:
quelle
Wenn Sie Material Design in Ihrer App verwenden, verwenden Sie dieses
quelle
Diese Klasse ist eine benutzerdefinierte kreisförmige Bildansicht mit Schatten, Strich, Sättigung. Mit dieser benutzerdefinierten kreisförmigen Bildansicht können Sie Ihr Bild in kreisförmiger Form mit Radius erstellen. Jungs für Circular Shadow ImageView Keine Notwendigkeit Github diese Klasse ist genug.
Hinzufügen von CircularImageView zu Ihrem Layout
quelle
Tatsächlich können Sie das, was Google bereitstellt, über die RoundedBitmapDrawableFactory-Klasse der Support-Bibliothek ( hier und hier) verwenden ) , verwenden, anstatt eine Bibliothek eines Drittanbieters zu verwenden:
Gradle:
MainActivity.kt
res / layout / activity_main.xml
res / drawable / avatar_1.xml
Das Ergebnis:
Angenommen, Sie möchten einen Rahmen darüber hinzufügen, können Sie dies beispielsweise verwenden:
strok_drawable.xml
Und fügen Sie
android:foreground="@drawable/stroke_drawable"
auf die Image in der Layout - XML - Datei, und Sie erhalten diese:Ich bin mir jedoch nicht sicher, wie ich Schatten hinzufügen soll (das funktioniert bei älteren Android-Versionen). Mit FloatingActionButton (aus der Abhängigkeit "com.google.android.material: material" ) konnte ich die Bitmap nicht dazu bringen, das FAB selbst zu füllen. Die Verwendung könnte sogar noch besser sein, wenn es funktioniert.
BEARBEITEN: Wenn Sie einen Höhenschatten hinzufügen möchten (verfügbar ab API 21), können Sie ein wenig ändern, was ich geschrieben habe:
In der Layout-XML-Datei:
CircularShadowViewOutlineProvider.kt
In Code:
Ergebnis:
quelle
Ich habe eine einfache Lösung. Erstellen Sie ein neues Image-Asset, indem Sie mit der rechten Maustaste auf Ihren Paketnamen klicken und Neu-> Image-Asset auswählen. Geben Sie den Namen (einen beliebigen Namen) und den Pfad (Speicherort des Bildes in Ihrem System) ein. Klicken Sie dann auf Weiter und Fertig stellen. Wenn Sie den Namen des Bildes als 'img' eingeben, wird automatisch ein rundes Bild mit dem Namen 'img_round' im Ordner mipmap erstellt.
Dann mach das:
Ihre Vorschau zeigt möglicherweise immer noch ein rechteckiges Bild. Wenn Sie die App jedoch auf Ihrem Gerät ausführen, ist sie rund.
quelle
Erstellen Sie eine CustomImageview und überschreiben Sie einfach die
onDraw()
folgende Methode:Falls Sie den Code auch für das benutzerdefinierte Widget möchten: -
Fügen Sie Ihrer res / attrs.xml außerdem den folgenden Code hinzu , um das erforderliche Attribut zu erstellen: -
quelle
quelle
Wenn Sie das Bild lieber so schneiden möchten, dass es kreisförmig angezeigt wird, können Sie loslegen
quelle
Wie in Orhan Obuts Antwort beschrieben, aber mit den Änderungen:
um Bildstrecken zu vermeiden. Und img.xml:
(ohne Änderungen) und circle.xml:
hier wird die Dicke des Rings maximal - 1000 dp
und radiusRatio ist die Hälfte der Bildbreite (maximale Ringbreite, ja?) - 2
und der Strich ist für den erforderlichen Rand, falls erforderlich.
Ich habe übrigens ein quadratisches PNG-Bild (profile.png) verwendet. Bei gleicher Breite und Höhe. Dies ist für beliebige ImageView-Dimensionen korrekt.
quelle
Verwenden Sie einfach diesen einfachen Code: Fügen Sie zuerst die Abhängigkeit hinzu:
Fügen Sie dann im XML-Layout den folgenden Code hinzu: -
quelle
Auch diese beiden Bibliotheken können Ihnen helfen.
https://github.com/vinc3m1/RoundedImageView
Implementieren Sie den folgenden Code:
Einfache Verwendung:
https://github.com/chirag-kachhadiya/RoundedImageView
Einfache Verwendung:
Implementieren Sie den folgenden Code:
quelle