原理就是画一个圆,用src去加载图片

import android.content.Context;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.Bitmap.Config;
import android.graphics.PorterDuff.Mode;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;

public class MyImageView extends ImageView{
public MyImageView(Context context) {  
   super(context);  
   // TODO Auto-generated constructor stub  
}  
 
public MyImageView(Context context, AttributeSet attrs) {  
   super(context, attrs);  
}  
 
public MyImageView(Context context, AttributeSet attrs, int defStyle) {  
   super(context, attrs, defStyle);  
}  
 
@Override  
protected 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,3,3, 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);  
   else  
       sbmp = 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());  
   //抗锯齿
   paint.setAntiAlias(true);  
   paint.setFilterBitmap(true);
   //抖动,高频颤抖,仿色
   paint.setDither(true);  
   canvas.drawARGB(0, 0, 0, 0);  
   paint.setColor(Color.parseColor("#BAB399"));  
   canvas.drawCircle(sbmp.getWidth() / 2+0.7f, sbmp.getHeight() / 2+0.7f,  
           sbmp.getWidth() / 2+0.1f, paint);  
   paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));  
   canvas.drawBitmap(sbmp, rect, rect, paint);  
 
 
           return output;  
}  
}

自定义ImageView加载圆形图片相关推荐

  1. Glide加载圆形图片和自定义圆角图片和对指定的角加载圆角

    先上效果图: 因注释很细,就不一一解释说明了! 1.Glide加载圆形图片: 自定义GlideCircleTransUtils继承BitmapTransformation,重写transform()方 ...

  2. Android Glide加载圆形图片,设置圆形边框

    Glide加载图片,Glide可以很方便的实现圆形加载并且也还可以设置变色边框. 关于Glide的加载在这里不详细说了,主要说一下自定义BitmapTransformation来实现圆形图片加载 st ...

  3. Gilde加载圆形图片

    实际开发中,很多项目中需要用到圆形图片,例如,项目中个人资料的用户头像.加载图片的框架有很多,我们就简单的说几个,及其他们的优缺点. 首先是Fresco,它的优点是其他几个框架没有的,或者说是其他几个 ...

  4. android glide圆形图片,Glide原生方法加载圆形图片

    项目中需要用圆形图片,我们知道,Android原生是没有好用的圆形图片的,何况还要网络加载什么的.今天找了下Glide加载圆形图片的方法,基本都是这种,说得倒是很明白的,但是我自己加载时候没有找到相应 ...

  5. Android Glide 加载圆形图片(绝对实用)

    1.导入依赖 implementation 'com.github.bumptech.glide:glide:4.6.1' 2.用Glide加载圆形图片 Glide.with(context).loa ...

  6. Picasso加载圆形图片和圆角图片

    (1)加载圆形图片 https://gist.github.com/julianshen/5829333 改进版支持Palltte https://gist.github.com/dtygel/71b ...

  7. Android Glide加载圆形图片、圆角图片,部分圆角图片的使用方法

    Android Glide加载圆形图片.圆角图片,部分圆角图片的使用方法 前言 Gilde圆形图片/头像 Gilde普通圆角图片即四个角都是圆角 Gilde对指定角设置圆角 前言 通过本文,您可以实现 ...

  8. Android 自定义ImageView加载图片

    自定义imageview功能: 可以实现设置图片显示的时候,依据本身的比例进行图片的缩放 加载图片效果: 使用ImageLoader来加载 图片: 首先将ImageLoader的jar包关联到项目中 ...

  9. ImageLoader加载圆形图片

    ImageLoader这个图片加载器是我经常使用额一个图片加载器(https://github.com/nostra13/Android-Universal-Image-Loader) 这个图片加载器 ...

  10. Glide加载圆形图片带白色边框

    1.导入Glide依赖 compile 'com.github.bumptech.glide:glide:4.0.0-RC1' 2.创建一个类 继承BitmapTransformation /*** ...

最新文章

  1. python安装环境配置linux_linux下安装python环境
  2. 2017.10.3北京清北综合强化班DAY3
  3. vs2013+EF6+Mysql
  4. BeetleX之XRPC远程委托调用
  5. Django REST framework 视图
  6. 【AI面试题】过拟合和欠拟合
  7. anywhere随启随用的静态文件服务器
  8. 内嵌网页 UniWebView 3 的使用
  9. 前端使用js压缩图片上传
  10. Web API 之 — Fullscreen API
  11. 融360 D轮融资超10亿 平台型互联网金融价值凸显
  12. GPRS模块的TCP发送数据流程
  13. vue、Cascader 级联选择、Cascader 属性事件方法、vue Cascader 所有级联选择样式、vue Cascader 级联选择全部属性事件方法
  14. Java Web程序设计第12章课后第2题
  15. 新手入门树莓派必做的四件事
  16. Oracle 查询技巧与优化(二) 多表查询
  17. 《自卑与超越》读书笔记(part4)--如果一个家庭中没有权威,那一定存在真正的合作精神
  18. 数学建模part(2):整数,非线性规划
  19. 漏极开路的分析(转)
  20. BDD - BDD Automation Framwork 自动化框架

热门文章

  1. vc植物大战僵尸修改器简单源代码
  2. STM32 FFT 音频处理
  3. Xcode打包证书,ipa安装启动闪退的相关问题
  4. Flutter状态管理Provider的简单使用
  5. mysql一个汉字是几个字节_mysql里一个中文汉字占多少字节数?
  6. A. Is your horseshoe on the other hoof?
  7. 联想台式电脑出现XXX指令引用了XXX内存 该内存不能为written 问题的解决
  8. C语言课设——电影院选票系统
  9. php codeigniter3,codeigniter
  10. USGS SWB模型