Comment ajouter une ombre et une bordure circulaire imageView android?

J'ai créé un CircularImageView avec cette question: Créer circulaire d'affichage de l'image dans android

Télécharger le projet sur GitHub

1) C'est le CircularImageView classe :

public class CircularImageView extends ImageView {
public CircularImageView(Context context) {
super(context);
}
public CircularImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CircularImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
Drawable drawable = getDrawable();
if (drawable == null) {
return;
}
if (getWidth() == 0 || getHeight() == 0) {
return; 
}
Bitmap b =  ((BitmapDrawable)drawable).getBitmap() ;
Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);      
Bitmap roundBitmap =  getCroppedBitmap(bitmap, getWidth());
canvas.drawBitmap(roundBitmap, 0, 0, null);
}
public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) {
Bitmap sbmp;
if(bmp.getWidth() != radius || bmp.getHeight() != radius)
sbmp = Bitmap.createScaledBitmap(bmp, radius, radius, false);
else
sbmp = bmp;
Bitmap output = Bitmap.createBitmap(sbmp.getWidth(), sbmp.getHeight(), Bitmap.Config.ARGB_8888);
final Rect rect = new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight());
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);      
paint.setColor(Color.parseColor("#BAB399"));
Canvas c = new Canvas(output);        
c.drawARGB(0, 0, 0, 0);
c.drawCircle(sbmp.getWidth() / 2+0.7f, sbmp.getHeight() / 2+0.7f, sbmp.getWidth() / 2+0.1f, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
c.drawBitmap(sbmp, rect, rect, paint);
return output;
}
}

2) - je utiliser dans ma mise en page comme ceci :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#cccccc"
android:gravity="center"
android:orientation="vertical"
android:padding="10dp" >
<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="center"
android:background="@drawable/border"
android:src="@drawable/image" />
</LinearLayout>

3) résultat Courant dans l'image :

Comment ajouter une ombre et une bordure circulaire imageView android?

Comment puis-je modifier ce code pour avoir une ombre et une circulaire de la frontière autour de mon imageView?

Objectif résultat :

Comment ajouter une ombre et une bordure circulaire imageView android?


Modifier 10/15/2015 :

Vous pouvez utiliser ou télécharger mes GitHub bibliothèque CircularImageView avec tous les correctifs en utilisant gradle dépendance :

compile 'com.mikhaellopez:circularimageview:2.0.1'
  • Je ne sais pas quel type d'application que vous faites, mais il a l'air génial
  • Votre code fonctionne et c'est vraiment bon! Mais il est possible d'utiliser wrap_content en largeur et en hauteur? Il plante quand je l'ai essayé.
  • Vous avez raison, il est impossible d'utiliser wrap_content en largeur et en hauteur à l'heure actuelle. Je n'ai pas eu le temps de le changer. Le problème vient du fait que j'ai fait en utilisant les dimensions de l'image pour tracer le cercle. À l'aide de wrap_content je perdre cette information. Le problème va être résolu, je vous préviens.
  • pourriez-vous corriger le mémoire lac sur cette bibliothèque? je pense que ce problème est pour android 6