Red de conocimiento informático - Material del sitio web - ¿Cómo agregar sombras y bordes a la vista de imagen circular?

¿Cómo agregar sombras y bordes a la vista de imagen circular?

Para resolver este problema, creé CircularImageView: Crear vista de imagen circular en Android

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"

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;