文章目录

  • 效果图
  • 圆角图片
  • 圆型图片
  • 使用

在开发工程中,我们可能会使用到圆形图片或圆角图片,如用户头像位置。
可以利用Drawable的方式,轻松制作。

效果图


圆角图片

public class RoundDrawable extends Drawable {private Paint mPaint;   //图片画笔private RectF mRectF;   //创建一个矩形,将图片绘制到该矩形上。private Bitmap mBitmap; //需要绘制的图片//region 绘制图片方法public RoundDrawable(Bitmap mBitmap) {this.mBitmap = mBitmap;//获取图片的着色器BitmapShader bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);//创建画笔mPaint = new Paint();//画笔防锯齿mPaint.setAntiAlias(true);//将图片设置到画笔上mPaint.setShader(bitmapShader);}//endregion//设置矩形大小和位置@Overridepublic void setBounds(int left, int top, int right, int bottom) {super.setBounds(left, top, right, bottom);mRectF = new RectF(left, top, right, bottom);}//绘制图片@Overridepublic void draw(@NonNull Canvas canvas) {canvas.drawRoundRect(mRectF, /*圆角x轴位置*/120,/*圆角y轴位置*/120, mPaint);}//设置图片宽度@Overridepublic int getIntrinsicWidth() {return mBitmap.getWidth();}//设置图片高度@Overridepublic int getIntrinsicHeight() {return mBitmap.getHeight();}//设置透明度@Overridepublic void setAlpha(int i) {mPaint.setAlpha(i);}@Overridepublic void setColorFilter(@Nullable ColorFilter colorFilter) {mPaint.setColorFilter(colorFilter);}@Overridepublic int getOpacity() {return PixelFormat.TRANSLUCENT;}
}

圆型图片

和绘制圆角图片方法基本一致。
区别就是绘制图片不用再绘制在矩形上了,可以直接绘制一个圆形。

public class CircleDrawable extends Drawable {private Paint mPaint;private int size;public CircleDrawable(Bitmap mBitmap) {mPaint = new Paint();mPaint.setAntiAlias(true);BitmapShader shader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);mPaint.setShader(shader);size = Math.min(mBitmap.getWidth(), mBitmap.getHeight());}@Overridepublic void draw(@NonNull Canvas canvas) {canvas.drawCircle(size / 2, size / 2, size / 2, mPaint);}@Overridepublic void setAlpha(int i) {mPaint.setAlpha(i);}@Overridepublic int getIntrinsicWidth() {return size;}@Overridepublic int getIntrinsicHeight() {return size;}@Overridepublic void setColorFilter(@Nullable ColorFilter colorFilter) {mPaint.setColorFilter(colorFilter);}@Overridepublic int getOpacity() {return PixelFormat.TRANSLUCENT;}
}

使用

public class MainActivity extends AppCompatActivity {private ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageView = findViewById(R.id.my_image);Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.autumn);Drawable drawable = new RoundDrawable(bitmap);      //圆角图片Drawable drawable = new CircleDrawable(bitmap);     //圆形图片imageView.setImageDrawable(drawable);}
}

利用Drawable绘制圆角图片和圆形图片相关推荐

  1. MYSQL圆角矩形表示_android 利用Bitmap获取圆角矩形、圆形图片

    1.在很多时候,我们要显示图片资源,需要将他的资源显示为圆角的:示例源码如下: public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,fl ...

  2. Android裁剪图片为圆形图片

    Android裁剪图片为圆形图片 http://blog.csdn.net/kkmike999/article/details/16359713 2013-11-16 19:15  3234人阅读  ...

  3. 使用Glide加载圆角矩形图片、圆形图片

    Glide是一个功能强大的图片加载库,下面是平常开发中使用到的一些功能,基于Glide-4.X版本的用法 Glide-github地址 Glide jar包下载地址 加载圆形图片: RequestOp ...

  4. Glide加载常用类型图片(带白色边框的圆形图、圆角矩形图片、圆形图片)

    一:依赖包: Glide_github implementation 'com.github.bumptech.glide:glide:4.8.0' annotationProcessor 'com. ...

  5. android圆角glide,使用Glide加载圆角矩形图片、圆形图片

    Glide是一个功能强大的图片加载库,下面是平常开发中使用到的一些功能,基于Glide-4.X版本的用法 Glide-github地址 Glide jar包下载地址 加载圆形图片:RequestOpt ...

  6. Android 心形图片心形ImageView、带边框的的心形图片和圆形图片

    源码地址:心形图片.心形ImageView.圆形图片.圆形ImageView 实际效果如下: 一.思路 1.图片尺寸:加载的图片尺寸不会完全统一,可以是正方形,长方形等,这里不需要考虑正方形,因为一般 ...

  7. Python 将矩形图片转为圆形图片

    使用PIL库将矩形图片转为原型图片 from PIL import Image, ImageDraw, ImageFilterdef crop_max_square(pil_img):return c ...

  8. Flutter组件--Image 图片组件,圆形图片

    1.属性 名称 color和colorBlendMode 设置图片的背景颜色,通常和colorBlendMode配合一起使用,这样可以是图片颜色和背景色混合.上面的图片就是进行了颜色的混合,绿色背景和 ...

  9. android画圆形背景图片,android圆形图片,圆形背景文字的CircleTextImageView开源组件...

    转[http://blog.csdn.net/ys408973279/article/details/50350313] 在项目中我们经常遇到需要显示圆形头像的需求,一般我们都使用hdodenhof/ ...

  10. 方形图片转为圆形图片

    在线工具:http://www.quickpicturetools.com/en/rounded_corners/ 打开 在线工具:http://www.quickpicturetools.com/e ...

最新文章

  1. python序列类型包括哪三种映射类型_python序列类型包括哪三种_后端开发
  2. Java 打印菱形星块
  3. ubuntu - 安装hive
  4. qt中根据数据解析的结果动态的创建控件并布局
  5. python存储序列_python序列类型及一些操作
  6. 【clickhouse】mac 10.15.7使用docker安装clickhouse
  7. java进行图片和字符串的互相转换
  8. 普通笔记本能运行Linux么,linux是什么啊?我们普通的台式电脑能不能用啊?
  9. 程序结构程序设计(三)
  10. 如何实现 迭代器 可迭代对象 (2.1)
  11. jquery以及jquery对象介绍
  12. java数据结构的面试题_Java面试题——数据结构篇(持续更新中)
  13. FPGA实现任意角度旋转图片
  14. 计算机开机密码设置要求,电脑设置开机密码
  15. dos 教程(很全的)
  16. 教程系列 - 用模板快速上线一个HR 服务中心
  17. google已经启用www.guge.com(谷歌)域名
  18. postgresql 免安装版本
  19. 【STM32F429的DSP教程】第25章 DSP变换运算-快速傅里叶变换原理(FFT)
  20. SYSTEM_INFO

热门文章

  1. outlook显示imap服务器已关闭,允许 Outlook Web App 中的最终用户查看 POP3、IMAP4 和 SMTP 服务器设置...
  2. 不要迷恋哥,哥只是个传说!
  3. SAP 离散,流程,重复制造
  4. 5号字对应的数字字号_5号字体是多少pt-字号,尺寸
  5. 十个前端UI优秀框架
  6. c语言中 结构体对象,C语言中结构体详解
  7. DOM控制video实现开始/暂停按钮思路方法
  8. vue 中 自定义按钮实现video暂停和播放
  9. 基于StackGAN++、CycleGAN的图像生成工具,开源
  10. Ubuntu安装中文输入法