定义类:

public class MLRoundedImageView extends android.support.v7.widget.AppCompatImageView {    public MLRoundedImageView(Context context) {        super(context);    }    public MLRoundedImageView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public MLRoundedImageView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);    }    public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) {        Bitmap sbmp;        if (bmp.getWidth() != radius || bmp.getHeight() != radius) {            float smallest = Math.min(bmp.getWidth(), bmp.getHeight());            float factor = smallest / radius;            sbmp = Bitmap.createScaledBitmap(bmp, (int) (bmp.getWidth() / factor), (int) (bmp.getHeight() / factor), false);        } else {            sbmp = bmp;        }        Bitmap output = Bitmap.createBitmap(radius, radius,                Config.ARGB_8888);        Canvas canvas = new Canvas(output);        //final int color = 0xffa19774;        final Paint paint = new Paint();        final Rect rect = new Rect(0, 0, radius, radius);        paint.setAntiAlias(true);        paint.setFilterBitmap(true);        paint.setDither(true);        canvas.drawARGB(0, 0, 0, 0);        paint.setColor(Color.parseColor("#BAB399"));        canvas.drawCircle(radius / 2 + 0.7f,                radius / 2 + 0.7f, radius / 2 + 0.1f, paint);        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));        canvas.drawBitmap(sbmp, rect, rect, paint);        return output;    }    @Override    protected 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 radius = getWidth(), h = getHeight();        Bitmap roundBitmap = getCroppedBitmap(bitmap, radius);        canvas.drawBitmap(roundBitmap, 0, 0, null);    }}

在布局文件中使用:


          


更多相关文章

  1. wheelView自定义android日期时间选择器
  2. Android根据属性值自定义改变图片颜色
  3. android 自定义toggle Button按钮
  4. Android studio RelativeLayout相对布局(控件相对父控件摆放-左上
  5. android 自定义View 滚动选择器PickerView
  6. Android自定义进度条的简单使用
  7. android的ListView自定义滚动条

随机推荐

  1. Android:关于ContentProvider的知识
  2. 手把手教Android商业项目-即时通讯-i美聊
  3. Android短信操作(通过内容提供者)
  4. Android Design Principles
  5. 《转》两分钟彻底让你明白Android中onInt
  6. sdcard无法挂载问题
  7. Android文档阅读02—解析Android程序
  8. Android编程 获取网络连接状态 及调用网
  9. Android 使用类加载器原理实现热修复
  10. android登录Web以及登录保持