Gostaria de fazer com que qualquer imagem minha ImageView
fosse circular com uma borda.
Eu procurei, mas não consegui encontrar nenhuma informação útil (qualquer coisa que tentei não funcionou).
Como conseguir isso através do xml: Crie um ImageView
com certo src e faça circular com uma borda?
Respostas:
Você pode fazer um círculo simples com borda branca e conteúdo transparente com forma.
Em seguida, crie uma lista de camadas desenhá-la e coloque-a como pano de fundo na visualização de imagem.
e coloque-o como pano de fundo na visualização de imagens.
Você terá algo assim.
fonte
Esta é a maneira mais simples que eu projetei. Tente isso.
Se você estiver trabalhando em versões do Android acima do pirulito
Adicionando borda ao redondo ImageView - VERSÃO MAIS RECENTE
Envolva-o com outro CardView um pouco maior que o interno e defina sua cor de fundo para adicionar uma borda à sua imagem redonda. Você pode aumentar o tamanho do CardView externo para aumentar a espessura da borda.
fonte
Eu espero que isso te ajude.
1) CircleImageView
Não se esqueça da implementação: Scripts Gradle> build.gradle (Módulo: app)> dependências
Para uma descrição completa, consulte aqui: A fonte aqui.
2) CircularImageView
Não se esqueça da implementação: Scripts Gradle> build.gradle (Módulo: app)> dependências
Para uma descrição completa, consulte aqui: A fonte aqui.
fonte
Com a ajuda da biblioteca glide e da classe RoundedBitmapDrawableFactory , é fácil de obter. Pode ser necessário criar uma imagem circular de espaço reservado.
Glide V4:
Glide V3:
Para a transformação arredondada Picasso , essa é uma solução realmente excelente que oferece uma opção adicional de arredondar a imagem na borda superior ou inferior.
fonte
Glide.with(context).load(imgUrl).apply(new RequestOptions().centerCrop()) .into(imageView)
.apply(RequestOptions.circleCropTransform())
GlideApp
é configurada uma aplicação:GlideApp.with(this).load(url).circleCrop().into(imageView);
.Os métodos acima parecem não funcionar se você estiver usando o
src
atributo O que fiz foi colocar duas visualizações de imagem dentro de um layout de quadro, um acima do outro como este:Simplesmente coloque um circular_crop.png na sua pasta de desenho que tem a forma das dimensões da sua imagem (um quadrado no meu caso) com um fundo branco e um círculo transparente no centro. Você pode usar esta imagem se desejar uma visualização de imagem quadrada.
Basta baixar a imagem acima.
fonte
A seguir, é uma das maneiras mais simples de fazer isso, use o seguinte código:
Dependências
Código XML
Captura de tela:
Fonte: Repositório Circular ImageView GitHub
fonte
Isto irá fazer o truque:
rectangle.xml
circle.xml
profile_image.xml (a lista de camadas)
Seu layout
fonte
Basta usar o
ShapeableImageView
fornecido pela Biblioteca de componentes de materiais.Algo como:
com:
Nota: requer pelo menos a versão
1.2.0-alpha03
.fonte
Você pode simplesmente usar o CardView sem nenhuma biblioteca externa
fonte
Eu uso shape = "oval" em vez do "anel" abaixo. Ele tem trabalhado para mim. Para manter a imagem dentro dos limites, eu uso
<padding>
e defino<adjustViewBounds>
como true no meu<ImageView>
. Eu tentei com imagens de tamanho entre 50 x 50 px até 200x200 px.fonte
android:scaleType="fitCenter"
@Jyotman Singh, a resposta é muito boa (para fundos sólidos), então eu gostaria de aprimorá-la compartilhando vetores desenháveis que podem ser coloridos novamente para suas necessidades, também é conveniente, pois a forma de peça única do vetor é bem escalável.
Esta é a forma do círculo retangular (@ drawable / shape_round_profile_pic):
O uso é o mesmo:
fonte
GlideApp.with(getApplicationContext()).asBitmap().load(profilePhotoUrl) .circleCrop()
Basta usar estas linhas de código e pronto:
Não se esqueça de importar:
Adicione esta biblioteca em build.gradle:
fonte
Tente isso.
e use este ImageView em layout como:
fonte
Se você usa o Design de materiais no seu aplicativo, use este
fonte
Esta classe é uma visualização de imagem circular personalizada com sombra, traço, saturação e, usando este ImageView circular personalizado, você pode criar sua imagem em forma circular com raio. Pessoal para Circular Shadow ImageView Não há necessidade de Github, essa classe é suficiente.
Adicionando CircularImageView ao seu layout
fonte
Na verdade, você pode usar o que o Google fornece através da classe RoundedBitmapDrawableFactory da biblioteca de suporte ( aqui e aqui ), em vez de usar uma biblioteca de terceiros:
Gradle:
MainActivity.kt
res / layout / activity_main.xml
res / drawable / avatar_1.xml
O resultado:
E, suponha que você queira adicionar uma borda sobre ela, você pode usar isso por exemplo:
stroke_drawable.xml
E adicione
android:foreground="@drawable/stroke_drawable"
ao ImageView no arquivo XML de layout e você obtém o seguinte:Não tenho certeza de como adicionar sombra (que funcionará em versões mais antigas do Android). Usando FloatingActionButton (da dependência "com.google.android.material: material" ), não consegui fazer o bitmap preencher o próprio FAB. Usá-lo poderia ser ainda melhor se funcionasse.
EDIT: se você deseja adicionar sombra de elevação (disponível na API 21), pode alterar um pouco o que escrevi:
Dentro do arquivo XML de layout:
CircularShadowViewOutlineProvider.kt
Em código:
Resultado:
fonte
Eu tenho uma solução simples. Crie um novo ativo de imagem clicando com o botão direito do mouse no nome do pacote e selecionando Novo-> ativo de imagem. Digite o nome (qualquer nome) e o caminho (local da imagem no seu sistema). Em seguida, clique em Avançar e em Concluir. Se você digitar o nome da imagem como 'img', uma imagem redonda com o nome 'img_round' será criada automaticamente na pasta mipmap.
Então, faça o seguinte:
Sua visualização ainda pode mostrar uma imagem retangular. Mas se você executar o aplicativo no seu dispositivo, ele será redondo.
fonte
Crie uma CustomImageview e simplesmente substitua o
onDraw()
método a seguir:Caso você queira o código para o widget personalizado também: -
Além disso, adicione o seguinte código ao seu res / attrs.xml para criar o atributo necessário: -
fonte
fonte
se você preferir cortar a imagem para exibir em circular, aqui vai
fonte
basta usar este código simples: Primeiro adicione dependência:
adicione no layout xml o seguinte código: -
fonte
Além disso, essas duas bibliotecas podem ajudá-lo.
https://github.com/vinc3m1/RoundedImageView
implementar código abaixo:
Uso simples:
https://github.com/chirag-kachhadiya/RoundedImageView
Uso simples:
implementar código abaixo:
fonte
Como foi descrito na resposta de Orhan Obut, mas com as mudanças:
para evitar trechos da imagem. E img.xml:
(sem alterações) e circle.xml:
aqui a espessura do anel é máxima - 1000dp
e radioRatio é metade da largura da imagem (largura máxima do anel, sim?) - 2
e o curso é para a borda necessária, se necessário.
Eu usei a imagem png quadrada (profile.png), aliás. Com a mesma largura e altura. Isso está correto para dimensões arbitrárias do ImageView.
fonte