package com.*.widget; import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PaintFlagsDrawFilter;import android.graphics.Path;import android.graphics.Region;import android.util.AttributeSet;import android.widget.ImageView; /** *  * android circle imageView * @author Block Cheng * */public class CircleImageView extends ImageView {     Path path;    public PaintFlagsDrawFilter mPaintFlagsDrawFilter;// 毛边过滤    Paint paint;         public CircleImageView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        // TODO Auto-generated constructor stub        init();    }     public CircleImageView(Context context, AttributeSet attrs) {        super(context, attrs);        // TODO Auto-generated constructor stub        init();    }     public CircleImageView(Context context) {        super(context);        // TODO Auto-generated constructor stub        init();    }    public void init(){        mPaintFlagsDrawFilter = new PaintFlagsDrawFilter(0,                Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);        paint = new Paint();        paint.setAntiAlias(true);        paint.setFilterBitmap(true);        paint.setColor(Color.WHITE);             }         @Override    protected void onDraw(Canvas cns) {        // TODO Auto-generated method stub        float h = getMeasuredHeight()- 3.0f;        float w = getMeasuredWidth()- 3.0f;        if (path == null) {            path = new Path();            path.addCircle(                    w/2.0f                    , h/2.0f                    , (float) Math.min(w/2.0f, (h / 2.0))                    , Path.Direction.CCW);            path.close();        }        cns.drawCircle(w/2.0f, h/2.0f,  Math.min(w/2.0f, h / 2.0f) + 1.5f, paint);         int saveCount = cns.getSaveCount();        cns.save();        cns.setDrawFilter(mPaintFlagsDrawFilter);        cns.clipPath(path,Region.Op.REPLACE);        cns.setDrawFilter(mPaintFlagsDrawFilter);        cns.drawColor(Color.WHITE);        super.onDraw(cns);        cns.restoreToCount(saveCount);    }     }

更多相关文章

  1. Android(安卓)- Manifest 文件 详解
  2. Intent详解(二)----Intent过滤器
  3. Android加速度传感器数值的过滤
  4. 【Android】动态注册广播接收器
  5. android电话拦截及短信过滤
  6. android filter
  7. Android怎么在控制台输出语句
  8. android filter
  9. Android――ImageButton按下效果设计

随机推荐

  1. android开发每日汇总【2011-10-29】
  2. android布局 LinearLayout和RelativeLayo
  3. Android 新手入门(2)-界面布局
  4. Android 平台搭建
  5. android ndk开发-环境搭建(1)
  6. Android开机广播
  7. android 参数含义
  8. 为android 工程添加单元测试
  9. android 圆环(ring)drawable 画法 ——简单
  10. 那些年收藏的技术文章(一)-CSDN篇