No desenvolvimento do Android , geralmente usamos o ImageView para exibir imagens, mas o ImageView padrão não oferece suporte à exibição de cantos arredondados. Podemos conseguir isso personalizando um ImageView arredondado.
Aqui estão os passos para implementar:
- Crie uma classe que herde de ImageView
public class RoundCornerImageView extends ImageView {
public RoundCornerImageView(contexto de contexto) {
super(contexto);
}
public RoundCornerImageView(contexto de contexto, AttributeSet attrs) {
super(contexto, atributos);
}
public RoundCornerImageView(contexto de contexto, AttributeSet attrs, int defStyleAttr) {
super(contexto, attrs, defStyleAttr);
}
@Sobrepor
void protegido no Draw (tela da tela) {
Caminho caminho = new Caminho() ;
float [] raios = new float [] { 10 , 10 , 10 , 10 , 0 , 0 , 0 , 0 };
path.add RoundRect(new RectF(0, 0, getWidth() , get Height() ), raios, Path.Direction.CW);
canvas.clip Path(caminho) ;
super.on Draw(canvas) ;
}
}
- Reescrever o método onDraw de ImageView
Precisamos desenhar um caminho de recorte de um retângulo arredondado no método onDraw e limitar o conteúdo do desenho ao caminho. Você pode usar a classe Path para desenhar o caminho de recorte do retângulo arredondado e usar o método clipPath de Canvas para limitar o conteúdo desenhado.
Neste exemplo, usamos um retângulo arredondado com um raio de 10dp , no qual o raio dos primeiros quatro cantos é 10dp e o raio dos últimos quatro cantos é 0 , de modo que apenas os cantos superior esquerdo e superior direito são arredondados Efeito.
- Use RoundCornerImageView personalizado no arquivo de layout
<com.example.myapp.RoundCornerImageView
android: layout_width = "200dp"
android: layout_height = "200dp"
android: src = "@drawable/image"
android: scaleType = "centerCrop"
aplicativo: layout_constraintStart_toStartOf = "pai"
aplicativo: layout_constraintEnd_toEndOf = "pai"
aplicativo: layout_constraintTop_toTopOf = "pai"
aplicativo: layout_constraintBottom_toBottomOf = "pai" />
Neste exemplo, usamos um RoundCornerImageView personalizado , definimos a largura e a altura como 200dp , usamos uma imagem como src e definimos o scaleType como centerCrop para preencher todo o ImageView com a imagem. Finalmente, ConstraintLayout é usado para layout.
Através das etapas acima, podemos implementar um ImageView com cantos arredondados .