1.继承ImageView实现CircleImageView
package com.example.ui;import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff.Mode; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF;import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.widget.ImageView; /** * 圆形的Imageview * @since 2012-11-02 * * @author bingyang.djj * */ public class CircleImageView1 extends ImageView { private Paint paint = new Paint(); public CircleImageView1(Context context) { super(context); } public CircleImageView1(Context context, AttributeSet attrs) { super(context, attrs); } public CircleImageView1(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onDraw(Canvas canvas) { Drawable drawable = getDrawable(); if (null != drawable) { Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); Bitmap b = toRoundCorner(bitmap, 14); // final Rect rect = new Rect(0, 0, b.getWidth(), b.getHeight()); final Rect rect = new Rect(0, 0, b.getWidth(),b.getHeight()); Rect rect1= new Rect(0, 0, this.getWidth(),this.getHeight()); paint.reset(); canvas.drawBitmap(b, rect, rect1, paint); } else { super.onDraw(canvas); } } private Bitmap toRoundCorner(Bitmap bitmap, int pixels) { Bitmap outBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(outBitmap); final int color = 0xff424242; final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); final RectF rectF = new RectF(rect); final float roundPX = bitmap.getWidth() / 2 < bitmap.getHeight() / 2 ? bitmap.getWidth() : bitmap.getHeight(); paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(color); canvas.drawRoundRect(rectF, roundPX, roundPX, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); return outBitmap; } }
package com.example.example02;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Bundle;import android.view.Menu;import com.example.ui.CircleImageView1;public class MainActivity extends Activity {private CircleImageView1 circleImageView1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);circleImageView1=(CircleImageView1) findViewById(R.id.imageView);Bitmap bitmap=Bitmap.createBitmap(100, 100, Config.ARGB_8888);Canvas canvas=new Canvas(bitmap);canvas.drawColor(Color.RED);Paint paint=new Paint();paint.setAntiAlias(true);paint.setColor(Color.WHITE);paint.setStyle(Paint.Style.STROKE);paint.setStrokeWidth(2);canvas.drawText("12345678",25, 60, paint);circleImageView1.setImageBitmap(bitmap);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
0 0