Je voudrais faire une image de mon ImageView
être circulaire avec une bordure.
J'ai cherché mais je n'ai trouvé aucune information utile (tout ce que j'ai essayé n'a pas fonctionné).
Comment puis-je y parvenir via xml: créer un ImageView
avec certains src et le rendre circulaire avec une bordure?
Réponses:
Vous pouvez faire un simple cercle avec une bordure blanche et un contenu transparent avec une forme.
Faites ensuite une liste de calques dessinable et mettez-la en arrière-plan de votre image.
et mettez-le en arrière-plan de votre image.
Vous aurez quelque chose comme ça.
la source
C'est la manière la plus simple que j'ai conçue. Essaye ça.
Si vous travaillez sur des versions Android au-dessus de sucette
Ajout d'une bordure à ImageView ronde - DERNIÈRE VERSION
Enveloppez-le avec un autre CardView légèrement plus grand que celui interne et définissez sa couleur d'arrière-plan pour ajouter une bordure à votre image ronde. Vous pouvez augmenter la taille du CardView externe pour augmenter l'épaisseur de la bordure.
la source
J'espère que cela t'aidera.
1) CircleImageView
N'oubliez pas l'implémentation: Gradle Scripts> build.gradle (Module: app)> dépendances
Pour une description complète, veuillez consulter ici: La source ici.
2) CircularImageView
N'oubliez pas l'implémentation: Gradle Scripts> build.gradle (Module: app)> dépendances
Pour une description complète, veuillez consulter ici: La source ici.
la source
Avec l'aide de la bibliothèque glide et de la classe RoundedBitmapDrawableFactory , c'est facile à réaliser. Vous devrez peut-être créer une image d'espace réservé circulaire.
Glide V4:
Glide V3:
Pour Picasso RoundedTransformation , c'est une très bonne solution qui donne une option supplémentaire d'arrondir l'image sur le bord supérieur ou inférieur.
la source
Glide.with(context).load(imgUrl).apply(new RequestOptions().centerCrop()) .into(imageView)
.apply(RequestOptions.circleCropTransform())
GlideApp
est configuré dans une application:GlideApp.with(this).load(url).circleCrop().into(imageView);
.Les méthodes ci-dessus ne semblent pas fonctionner si vous utilisez l'
src
attribut. Ce que j'ai fait, c'est de placer deux vues d'image à l'intérieur d'une disposition de cadre l'une au-dessus de l'autre comme ceci:Mettez simplement un circular_crop.png dans votre dossier dessinable qui a la forme des dimensions de votre image (un carré dans mon cas) avec un fond blanc et un cercle transparent au centre. Vous pouvez utiliser cette image si vous souhaitez une image carrée.
Téléchargez simplement l'image ci-dessus.
la source
Ce qui suit est l'une des façons les plus simples de le faire, utilisez le code suivant:
Dépendances
Code XML
Capture d'écran:
Source: référentiel circulaire ImageView GitHub
la source
Ça fera l'affaire:
rectangle.xml
circle.xml
profile_image.xml (La liste des calques)
Votre mise en page
la source
Utilisez simplement le
ShapeableImageView
fourni par la bibliothèque de composants de matériaux.Quelque chose comme:
avec:
Remarque: il nécessite au moins la version
1.2.0-alpha03
.la source
Vous pouvez simplement utiliser CardView sans aucune bibliothèque externe
la source
J'utilise shape = "oval" au lieu de "ring" ci-dessous. ça a marché pour moi. Pour garder l'image dans les limites, j'utilise
<padding>
et définit<adjustViewBounds>
true dans mon<ImageView>
. J'ai essayé avec des images de taille comprise entre 50 x 50 px jusqu'à 200x200 px.la source
android:scaleType="fitCenter"
@Jyotman Singh, la réponse est très bonne (pour les arrière-plans solides), donc je voudrais l'améliorer en partageant un vecteur dessinable qui peut être re-coloré pour vos besoins, c'est également pratique car la forme vectorielle monobloc est bien évolutive.
C'est la forme du rectangle-cercle (@ drawable / shape_round_profile_pic):
L'utilisation est la même:
la source
GlideApp.with(getApplicationContext()).asBitmap().load(profilePhotoUrl) .circleCrop()
Utilisez simplement ces lignes de code et vous avez terminé:
N'oubliez pas d'importer:
Ajoutez cette bibliothèque dans build.gradle:
la source
Essaye ça.
et utilisez cette ImageView dans une mise en page comme:
la source
Si vous utilisez Material Design dans votre application, utilisez ce
la source
Cette classe est une image circulaire personnalisée avec ombre, trait, saturation et en utilisant cette image circulaire personnalisée, vous pouvez créer votre image en forme circulaire avec rayon. Guys for Circular Shadow ImageView Pas besoin de Github cette classe est suffisante.
Ajout de CircularImageView à votre mise en page
la source
En fait, vous pouvez utiliser ce que Google fournit via la bibliothèque de support RoundedBitmapDrawableFactory ( ici et ici ), au lieu d'utiliser une bibliothèque tierce:
Gradle:
MainActivity.kt
res / layout / activity_main.xml
res / drawable / avatar_1.xml
Le résultat:
Et, supposons que vous vouliez ajouter une bordure dessus, vous pouvez utiliser ceci par exemple:
stroke_drawable.xml
Et ajoutez
android:foreground="@drawable/stroke_drawable"
à ImageView dans le fichier XML de mise en page, et vous obtenez ceci:Je ne sais pas comment ajouter de l'ombre (cela fonctionnera sur les anciennes versions d'Android). À l'aide de FloatingActionButton (de la dépendance "com.google.android.material: material" ), je n'ai pas réussi à faire en sorte que le bitmap remplisse le FAB lui-même. L'utiliser à la place pourrait être encore mieux s'il fonctionnait.
EDIT: si vous souhaitez ajouter une ombre d'élévation (disponible à partir de l'API 21), vous pouvez changer un peu ce que j'ai écrit:
A l'intérieur du fichier XML de mise en page:
CircularShadowViewOutlineProvider.kt
Dans du code:
Résultat:
la source
J'ai une solution simple. Créez un nouvel élément d'image en cliquant avec le bouton droit sur le nom de votre package et en sélectionnant Nouveau-> Élément d'image. Entrez le nom (n'importe quel nom) et le chemin (emplacement de l'image dans votre système). Cliquez ensuite sur Suivant et sur Terminer. Si vous entrez le nom de l'image en tant que «img», une image ronde avec le nom «img_round» est créée automatiquement dans le dossier mipmap.
Ensuite, faites ceci:
Votre aperçu peut toujours afficher une image rectangulaire. Mais si vous exécutez l'application sur votre appareil, ce sera rond.
la source
Créez un CustomImageview puis remplacez simplement sa
onDraw()
méthode comme suit:Si vous souhaitez également le code du widget personnalisé: -
Ajoutez également le code suivant à votre fichier res / attrs.xml pour créer l'attribut requis: -
la source
la source
si vous préférez couper l'image pour l'afficher en circulaire, c'est parti
la source
utilisez simplement ce code simple: Ajoutez d'abord la dépendance:
puis ajoutez dans la disposition xml le code suivant: -
la source
ces deux bibliothèques peuvent également vous aider.
https://github.com/vinc3m1/RoundedImageView
implémenter le code ci-dessous:
Utilisation simple:
https://github.com/chirag-kachhadiya/RoundedImageView
Utilisation simple:
implémenter le code ci-dessous:
la source
Comme cela a été décrit dans la réponse d'Orhan Obut mais avec les changements:
pour éviter les étirements de l'image. Et img.xml:
(sans modifications) et circle.xml:
ici l'épaisseur de l'anneau est devenue maximale - 1000dp
et radiusRatio est la moitié de la largeur de l'image (largeur maximale de l'anneau, oui?) - 2
et le trait est pour la bordure requise si nécessaire.
J'ai utilisé l'image carrée png (profile.png), btw. De même largeur et hauteur. Ceci est correct pour les dimensions arbitraires d'ImageView.
la source