利用Drawable绘制圆角图片和圆形图片
文章目录
- 效果图
- 圆角图片
- 圆型图片
- 使用
在开发工程中,我们可能会使用到圆形图片或圆角图片,如用户头像位置。
可以利用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绘制圆角图片和圆形图片相关推荐
- MYSQL圆角矩形表示_android 利用Bitmap获取圆角矩形、圆形图片
1.在很多时候,我们要显示图片资源,需要将他的资源显示为圆角的:示例源码如下: public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,fl ...
- Android裁剪图片为圆形图片
Android裁剪图片为圆形图片 http://blog.csdn.net/kkmike999/article/details/16359713 2013-11-16 19:15 3234人阅读 ...
- 使用Glide加载圆角矩形图片、圆形图片
Glide是一个功能强大的图片加载库,下面是平常开发中使用到的一些功能,基于Glide-4.X版本的用法 Glide-github地址 Glide jar包下载地址 加载圆形图片: RequestOp ...
- Glide加载常用类型图片(带白色边框的圆形图、圆角矩形图片、圆形图片)
一:依赖包: Glide_github implementation 'com.github.bumptech.glide:glide:4.8.0' annotationProcessor 'com. ...
- android圆角glide,使用Glide加载圆角矩形图片、圆形图片
Glide是一个功能强大的图片加载库,下面是平常开发中使用到的一些功能,基于Glide-4.X版本的用法 Glide-github地址 Glide jar包下载地址 加载圆形图片:RequestOpt ...
- Android 心形图片心形ImageView、带边框的的心形图片和圆形图片
源码地址:心形图片.心形ImageView.圆形图片.圆形ImageView 实际效果如下: 一.思路 1.图片尺寸:加载的图片尺寸不会完全统一,可以是正方形,长方形等,这里不需要考虑正方形,因为一般 ...
- Python 将矩形图片转为圆形图片
使用PIL库将矩形图片转为原型图片 from PIL import Image, ImageDraw, ImageFilterdef crop_max_square(pil_img):return c ...
- Flutter组件--Image 图片组件,圆形图片
1.属性 名称 color和colorBlendMode 设置图片的背景颜色,通常和colorBlendMode配合一起使用,这样可以是图片颜色和背景色混合.上面的图片就是进行了颜色的混合,绿色背景和 ...
- android画圆形背景图片,android圆形图片,圆形背景文字的CircleTextImageView开源组件...
转[http://blog.csdn.net/ys408973279/article/details/50350313] 在项目中我们经常遇到需要显示圆形头像的需求,一般我们都使用hdodenhof/ ...
- 方形图片转为圆形图片
在线工具:http://www.quickpicturetools.com/en/rounded_corners/ 打开 在线工具:http://www.quickpicturetools.com/e ...
最新文章
- python序列类型包括哪三种映射类型_python序列类型包括哪三种_后端开发
- Java 打印菱形星块
- ubuntu - 安装hive
- qt中根据数据解析的结果动态的创建控件并布局
- python存储序列_python序列类型及一些操作
- 【clickhouse】mac 10.15.7使用docker安装clickhouse
- java进行图片和字符串的互相转换
- 普通笔记本能运行Linux么,linux是什么啊?我们普通的台式电脑能不能用啊?
- 程序结构程序设计(三)
- 如何实现 迭代器 可迭代对象 (2.1)
- jquery以及jquery对象介绍
- java数据结构的面试题_Java面试题——数据结构篇(持续更新中)
- FPGA实现任意角度旋转图片
- 计算机开机密码设置要求,电脑设置开机密码
- dos 教程(很全的)
- 教程系列 - 用模板快速上线一个HR 服务中心
- google已经启用www.guge.com(谷歌)域名
- postgresql 免安装版本
- 【STM32F429的DSP教程】第25章 DSP变换运算-快速傅里叶变换原理(FFT)
- SYSTEM_INFO
热门文章
- outlook显示imap服务器已关闭,允许 Outlook Web App 中的最终用户查看 POP3、IMAP4 和 SMTP 服务器设置...
- 不要迷恋哥,哥只是个传说!
- SAP 离散,流程,重复制造
- 5号字对应的数字字号_5号字体是多少pt-字号,尺寸
- 十个前端UI优秀框架
- c语言中 结构体对象,C语言中结构体详解
- DOM控制video实现开始/暂停按钮思路方法
- vue 中 自定义按钮实现video暂停和播放
- 基于StackGAN++、CycleGAN的图像生成工具,开源
- Ubuntu安装中文输入法