1. Original
--》
2. Custom control Classes
Package Com.chaowen.yixin;import Android.content.context;import Android.graphics.bitmap;import Android.graphics.bitmap.config;import Android.graphics.canvas;import Android.graphics.color;import Android.graphics.paint;import Android.graphics.porterduff.mode;import Android.graphics.porterduffxfermode;import Android.graphics.rect;import Android.graphics.drawable.bitmapdrawable;import android.graphics.drawable.Drawable; Import Android.util.attributeset;import Android.widget.imageview;public class Roundedimageview extends ImageView { Public Roundedimageview (Context context) {super (context);//TODO auto-generated constructor Stub}public Roundedimageview (context context, AttributeSet Attrs) {Super (context, attrs);} Public Roundedimageview (context context, AttributeSet attrs, int defstyle) {Super (context, attrs, Defstyle);} @Overrideprotected 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); int w = getwidth (), H = getheight (); Bitmap Roundbitmap = Getcroppedbitmap (Bitmap, W); 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); elsesbmp = BMP; Bitmap output = Bitmap.createbitmap (Sbmp.getwidth (), Sbmp.getheight (), config.argb_8888); Canvas canvas = new canvas (output), final int color = 0xffa19774;final Paint paint = new paint (); final rect rect = new rect (0, 0, sbmp.getwidth (), Sbmp.getheight ());p Aint.setantialias (True);p Aint.setfilterbitmap (True);p Aint.setdither ( true); Canvas.drawargb (0, 0, 0, 0);p Aint.setcolor (Color.parsecolor ("#BAB399")); Canvas.drawcircle (Sbmp.getwidth ()/2 +0.7f, Sbmp.getheight ()/2+0.7f,sbmp.getwidth ()/2+0.1f, paint);p Aint.setxfermode (New Porterduffxfermode (Mode.SRC_ in)); Canvas.drawbiTMap (sbmp, rect, rect, paint); return output;}}
3. Using controls
<com.chaowen.yixin.roundedimageview android:id= "@+id/headimageview" android:layout_width= "Wrap_ Content " android:layout_height=" wrap_content " android:layout_gravity=" Center_horizontal " android: layout_margintop= "25.0dip" android:adjustviewbounds= "true" android:maxheight= "80dip" android: Maxwidth= "80dip" android:src= "@drawable/head_default_yixin"/>
4. Ok
Android--Custom ImageView (round head)