¿Cómo agregar sombras y bordes a la vista de imagen circular?
Descargar proyecto GitHub
1) Esta es la clase CircularImageView:
clase pública CircularImageView extiende ImageView {
público CircularImageView (contexto de contexto) {
super(contexto);
}
público CircularImageView (contexto de contexto, AttributeSet atributos) {
super(contexto, atributos);
}
public CircularImageView(Contexto contexto, AttributeSet atributos, int defStyle) {
} p>
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
Dibujable dibujable = getDrawable();
if (dibujable == null) {
return
}
if (getWidth() == 0 || getHeight() == 0) {
Devolver
}
Mapa de bits b = (( BitmapDrawable)drawable) .getBitmap();
Mapa de bits bitmap = b.copy(Bitmap.Config.ARGB_8888, true
Bitmap roundBitmap = getCroppedBitmap(bitmap, getWidth());
canvas.DrawBitmap(roundBitmap, getWidth());
CroppedBitmap(roundBitmap, getWidth())drawBitmap(roundBitmap, 0, 0, null); p>}
Mapa de bits estático público getCroppedBitmap(Mapa de bits bmp, int radio) {
Mapa de bits sbmp;
if(bmp.getWidth() ! = radio || bmp.getHeight() ! = radio)
sbmp = Bitmap.createScaledBitmap(bmp, radio, radio, false);
else
sbmp = bmp;
Salida de mapa de bits = Bitmap.createBitmap(sbmp.getWidth(), sbmp.getHeight(), Bitmap.Config.ARGB_888
8);
final Rect rect = new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight());
Pintar pintura = new Paint(); /p>
paint.setAntiAlias(verdadero);
paint.setFilterBitmap();
FilterBitmap()setDither(verdadero);
pintura. setColor(Color.parseColor("#BAB399"));
Canvas c = new Canvas(salida);
c.drawARGB(0, 0, 0, 0);
c.drawCircle(sbmp.drawCircle);
c.drawCircle(sbmp.drawCircle);
c.drawCircle(sbmp.drawCircle);
c.drawCircle(sbmp.drawCircle);
c.drawCircle(sbmp.drawCircle);
c.drawCircle(sbmp.drawCircle)drawCircle(sbmp.getWidth( ) / 2 0.7f, sbmp.getHeight() / 2 0.7f, sbmp.getWidth() / 2 0.1f, pintura);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
c.drawBitmap(sbmp, rect, rect, paint
Devolver salida
}
}
<); p>2) Utilicé este diseño en mi diseño:lt;LinearLayout xmlns:android="/apk/res/android"
android:layout_width="match_parent" p>
android:layout_height="match_parent"
android:background="#cccccc"
android:gravity="center"
android: orientación="vertical"
android: padding="10dp" gt;
lt; com.mikhaellopez.circularimageview.CircularImageView
android: id= "@ id/imageViewCircular"
android:layout_width="@dimen/image_view_size"
android:layout_height="@dimen/image_view_size"
android:layout_gravity =" centro"
android: background="@drawable/border"
android: src="@dr
awable/imagen" /gt;
lt;/LinearLayoutgt;