1. Custom Circle Tool Class
Circleimageviewutil.java
Key points: self-sustaining scaling possible
Package Com.example.circleimageviewdemo;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;/** * Round ImageView * * @author TF * */public class Circ Leimageviewutil extends ImageView {public Circleimageviewutil (context context) {This (context, null);} Public Circleimageviewutil (context context, AttributeSet Attrs) {This (context, attrs, 0);} Public Circleimageviewutil (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 (); if (null = = b) {return;} 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;}}
2, Mainactivity.java
Package Com.example.circleimageviewdemo;import Java.io.ioexception;import Java.net.malformedurlexception;import Java.net.uri;import java.net.url;import android.net.uri;import Android.os.bundle;import android.app.Activity; Import Android.graphics.bitmap;import Android.graphics.bitmapfactory;import Android.view.menu;public class Mainactivity extends Activity {circleimageviewutil circle_imageview; @Overrideprotected void OnCreate (Bundle Savedinstancestate) {super.oncreate (savedinstancestate); Setcontentview (R.layout.activity_circle_image_view); Circle_imageview = (circleimageviewutil) Findviewbyid (R.id.circle_imageview); Circle_imageview.setimageresource ( R.DRAWABLE.GUIDE3);//circle_imageview.setimagebitmap (BM);//circle_imageview.setimagedrawable (drawable)/*Uri Uri = new Uri (""); Circle_imageview.setimageuri (URI); */}}
XML file:
Key points: <com.example.circleimageviewdemo.circleimageviewutil>
<relativelayout xmlns:android= "http://schemas.android.com/apk/res/android" xmlns:tools= "http// Schemas.android.com/tools " android:layout_width=" match_parent " android:layout_height=" Match_parent " android:paddingbottom= "@dimen/activity_vertical_margin" android:paddingleft= "@dimen/activity_ Horizontal_margin " android:paddingright=" @dimen/activity_horizontal_margin " android:paddingtop=" @dimen /activity_vertical_margin " tools:context=". Mainactivity "> <textview android:layout_width=" wrap_content " android:layout_height=" Wrap_ Content " android:text=" @string/hello_world "/> < Com.example.circleimageviewdemo.CircleImageViewUtil android:layout_height= "80DP" android:layout_ Width= "80DP" android:id= "@+id/circle_imageview" > </ Com.example.circleimageviewdemo.circleimageviewutil> </RelativeLayout>
Custom Circle Tool class