Me gustaría hacer cualquier imagen de mi ImageView
sea circular con un borde.
Busqué pero no pude encontrar ninguna información útil (cualquier cosa que intenté no funcionó).
¿Cómo puedo lograr esto a través de xml: crear un archivo ImageView
con cierto src y hacerlo circular con un borde?
Respuestas:
Puede hacer un círculo simple con borde blanco y contenido transparente con forma.
Luego haga una lista de capas dibujable y póngala como fondo para su vista de imagen.
y póngalo como fondo para su vista de imagen.
Tendrás algo así.
fuente
Esta es la forma más simple que diseñé. Prueba esto.
Si está trabajando en versiones de Android anteriores a lollipop
Agregar borde a ImageView redondo - ÚLTIMA VERSIÓN
Envuélvalo con otro CardView ligeramente más grande que el interno y configure su color de fondo para agregar un borde a su imagen redonda. Puede aumentar el tamaño del CardView externo para aumentar el grosor del borde.
fuente
Espero que esto ayude.
1) CircleImageView
No olvide la implementación: Gradle Scripts> build.gradle (Módulo: aplicación)> dependencias
Para obtener una descripción completa, consulte aquí: La fuente aquí.
2) CircularImageView
No olvide la implementación: Gradle Scripts> build.gradle (Módulo: aplicación)> dependencias
Para obtener una descripción completa, consulte aquí: La fuente aquí.
fuente
Con la ayuda de la biblioteca glide y la clase RoundedBitmapDrawableFactory es fácil de lograr. Es posible que deba crear una imagen de marcador de posición circular.
Glide V4:
Glide V3:
Para Picasso RoundedTransformation , esta es una solución realmente excelente que ofrece una opción adicional de redondear la imagen en el borde superior o inferior.
fuente
Glide.with(context).load(imgUrl).apply(new RequestOptions().centerCrop()) .into(imageView)
.apply(RequestOptions.circleCropTransform())
GlideApp
está configurado en una aplicación:GlideApp.with(this).load(url).circleCrop().into(imageView);
.Los métodos anteriores no parecen funcionar si está utilizando el
src
atributo. Lo que hice fue poner dos vistas de imagen dentro de un diseño de marco una encima de otra como esta:Simplemente coloque un circular_crop.png en su carpeta dibujable que tenga la forma de las dimensiones de su imagen (un cuadrado en mi caso) con un fondo blanco y un círculo transparente en el centro. Puede usar esta imagen si desea una vista de imagen cuadrada.
Simplemente descargue la imagen de arriba.
fuente
La siguiente es una de las formas más simples de hacerlo, use el siguiente código:
Dependencias
Código XML
Captura de pantalla:
Fuente: repositorio circular ImageView GitHub
fuente
Esto hará el truco:
rectángulo.xml
circle.xml
profile_image.xml (La lista de capas)
Su diseño
fuente
Solo use el
ShapeableImageView
proporcionado por la Biblioteca de Componentes de Materiales.Algo como:
con:
Nota: requiere al menos la versión
1.2.0-alpha03
.fuente
Simplemente puede usar CardView sin ninguna biblioteca externa
fuente
Yo uso shape = "oval" en lugar del "anillo" a continuación. Esto ha funcionado para mí. Para mantener la imagen dentro de los límites, uso
<padding>
y configuro<adjustViewBounds>
en verdadero en mi<ImageView>
. He intentado con imágenes de tamaño entre 50 x 50 px hasta 200x200 px.fuente
android:scaleType="fitCenter"
@Jyotman Singh, la respuesta es muy buena (para fondos sólidos), por lo que me gustaría mejorarla compartiendo vectores dibujables que se puedan volver a colorear según sus necesidades, también es conveniente ya que la forma de una pieza del vector es muy escalable.
Esta es la forma del círculo rectangular (@ drawable / shape_round_profile_pic):
El uso es el mismo:
fuente
GlideApp.with(getApplicationContext()).asBitmap().load(profilePhotoUrl) .circleCrop()
Simplemente use estas líneas de código y listo:
No olvides importar:
Agregue esta biblioteca en build.gradle:
fuente
Prueba esto.
y use este ImageView en diseño como:
fuente
Si usa Material Design en su aplicación, use esto
fuente
Esta clase es una vista de imagen circular personalizada con sombra, trazo, saturación y con esta vista de imagen circular personalizada puede hacer su imagen en forma circular con radio. Chicos para Circular Shadow ImageView No es necesario Github esta clase es suficiente.
Agregar CircularImageView a su diseño
fuente
En realidad, puede usar lo que Google proporciona a través de la biblioteca de soporte RoundedBitmapDrawableFactory ( aquí y aquí ), en lugar de usar una biblioteca de terceros:
Gradle:
MainActivity.kt
res / layout / activity_main.xml
res / drawable / avatar_1.xml
El resultado:
Y, supongamos que desea agregar un borde encima, puede usar esto, por ejemplo:
stroke_drawable.xml
Y agregue
android:foreground="@drawable/stroke_drawable"
a ImageView en el archivo XML de diseño, y obtendrá esto:Sin embargo, no estoy seguro de cómo agregar sombra (eso funcionará en versiones anteriores de Android). Usando FloatingActionButton (de la dependencia "com.google.android.material: material" ), no pude hacer que el mapa de bits llene el FAB. Usarlo en su lugar podría ser aún mejor si funcionara.
EDITAR: si desea agregar sombra de elevación (disponible desde API 21), puede cambiar un poco lo que escribí:
Dentro del archivo XML de diseño:
CircularShadowViewOutlineProvider.kt
En codigo:
Resultado:
fuente
Tengo una solución simple Cree un nuevo activo de imagen haciendo clic derecho en el nombre de su paquete y seleccionando Nuevo-> activo de imagen. Ingrese el nombre (cualquier nombre) y la ruta (ubicación de la imagen en su sistema). Luego haga clic en Siguiente y Finalizar. Si ingresa el nombre de la imagen como 'img', se crea automáticamente una imagen redonda con el nombre 'img_round' en la carpeta mipmap.
Entonces, haz esto:
Su vista previa aún puede mostrar una imagen rectangular. Pero si ejecuta la aplicación en su dispositivo, será redonda.
fuente
Cree una vista de imagen personalizada y simplemente anule su
onDraw()
método de la siguiente manera:En caso de que también desee el código para el widget personalizado: -
Además, agregue el siguiente código a su res / attrs.xml para crear el atributo requerido: -
fuente
fuente
si prefieres cortar la imagen para mostrarla en circular, aquí tienes
fuente
solo use este código simple: Primero agregue dependencia:
luego agregue en el diseño xml el siguiente código: -
fuente
Además, estas dos bibliotecas pueden ayudarlo.
https://github.com/vinc3m1/RoundedImageView
implementar debajo del código:
Uso simple:
https://github.com/chirag-kachhadiya/RoundedImageView
Uso simple:
implementar debajo del código:
fuente
Como se describió en la respuesta de Orhan Obut pero con los cambios:
para evitar tramos de la imagen. Y img.xml:
(sin cambios) y circle.xml:
aquí el grosor del anillo llegó al máximo - 1000dp
y radio Radio es la mitad del ancho de la imagen (ancho máximo del anillo, ¿sí?) - 2
y el trazo es para el borde requerido si es necesario.
Utilicé la imagen png cuadrada (profile.png), por cierto. Con el mismo ancho y alto. Esto es correcto para las dimensiones arbitrarias de ImageView.
fuente