圆形ImageView且设置动态生成的image

来源:互联网 发布:淘宝众筹失败会怎么样 编辑:程序博客网 时间:2024/05/17 12:56
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
原创粉丝点击