Android怎么实现图片设置圆角形式
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要讲解了"Android怎么实现图片设置圆角形式",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Android怎么实现图片设置圆角形式"吧!1
千家信息网最后更新 2025年11月09日Android怎么实现图片设置圆角形式
这篇文章主要讲解了"Android怎么实现图片设置圆角形式",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Android怎么实现图片设置圆角形式"吧!
1.自定义的图片圆角形式CircleImageView类
public class CircleImageView extends ImageView { private static final Xfermode MASK_XFERMODE; private Bitmap mask; private Paint paint; private int mBorderWidth = 10; private int mBorderColor = Color.parseColor("#f2f2f2"); private boolean useDefaultStyle = false; static { PorterDuff.Mode localMode = PorterDuff.Mode.DST_IN; MASK_XFERMODE = new PorterDuffXfermode(localMode); } public CircleImageView(Context context) { super(context); } public CircleImageView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CircleImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CircularImage); mBorderColor = a.getColor(R.styleable.CircularImage_border_color, mBorderColor); final int def = (int) (2 * context.getResources().getDisplayMetrics().density + 0.5f); mBorderWidth = a.getDimensionPixelOffset(R.styleable.CircularImage_border_width, def); a.recycle(); } private void useDefaultStyle(boolean useDefaultStyle) { this.useDefaultStyle = useDefaultStyle; } @Override protected void onDraw(Canvas canvas) { if (useDefaultStyle) { super.onDraw(canvas); return; } final Drawable localDraw = getDrawable(); if (localDraw == null) { return; } if (localDraw instanceof NinePatchDrawable) { return; } if (this.paint == null) { final Paint localPaint = new Paint(); localPaint.setFilterBitmap(false); localPaint.setAntiAlias(true); localPaint.setXfermode(MASK_XFERMODE); this.paint = localPaint; } final int width = getWidth(); final int height = getHeight(); /** 保存layer */ int layer = canvas.saveLayer(0.0F, 0.0F, width, height, null, 31); /** 设置drawable的大小 */ localDraw.setBounds(0, 0, width, height); /** 将drawable绑定到bitmap(this.mask)上面(drawable只能通过bitmap显示出来) */ localDraw.draw(canvas); if ((this.mask == null) || (this.mask.isRecycled())) { this.mask = createOvalBitmap(width, height); } /** 将bitmap画到canvas上面 */ canvas.drawBitmap(this.mask, 0.0F, 0.0F, this.paint); /** 将画布复制到layer上 */ canvas.restoreToCount(layer); drawBorder(canvas, width, height); } /** * 绘制圆形边框 */ private void drawBorder(Canvas canvas, final int width, final int height) { if (mBorderWidth == 0) { return; } final Paint mBorderPaint = new Paint(); mBorderPaint.setStyle(Paint.Style.STROKE); mBorderPaint.setAntiAlias(true); mBorderPaint.setColor(mBorderColor); mBorderPaint.setStrokeWidth(mBorderWidth); canvas.drawCircle(width / 2, height / 2, (width - mBorderWidth) / 2, mBorderPaint); canvas = null; } public Bitmap createOvalBitmap(final int width, final int height) { Bitmap.Config localConfig = Bitmap.Config.ARGB_8888; Bitmap localBitmap = Bitmap.createBitmap(width, height, localConfig); Canvas localCanvas = new Canvas(localBitmap); Paint localPaint = new Paint(); final int padding = (mBorderWidth - 3) > 0 ? mBorderWidth - 3 : 1; /** * 设置椭圆的大小(因为椭圆的最外边会和border的最外边重合的,如果图片最外边的颜色很深,有看出有棱边的效果,所以为了让体验更加好, * 让其缩进padding px) */ RectF localRectF = new RectF(padding, padding, width - padding, height - padding); localCanvas.drawOval(localRectF, localPaint); return localBitmap; }}1.1 在values目录下创建一个circle_attr.xml,文件内容:
如下图:
2.activity_main.xml
3.MainActivity.java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }}运行后结果:

感谢各位的阅读,以上就是"Android怎么实现图片设置圆角形式"的内容了,经过本文的学习后,相信大家对Android怎么实现图片设置圆角形式这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
图片
圆角
形式
内容
学习
大小
椭圆
圆形
就是
思路
情况
效果
文件
文章
更多
棱边
画布
目录
知识
知识点
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
简易的语音对讲软件开发
西城区信息网络技术推广诚信服务
网络安全学院靠谱吗
led电脑控制软件开发
ai和网络安全的综艺节目
浙江企业软件开发需要多少钱
数据库采购订单表
软件开发如何转行
Notes数据库删了 恢复
数据库sequence循环
服务器沉了
网络安全许可证年审要求
湿地 数据库
网络安全知识互动游戏
app打牌软件开发
33岁学软件开发晚吗
apn服务器怎么建设
统筹安排网络安全工作
网络安全保卫支队做什么的
汽车ecu 软件开发工具
我的世界服务器魂环怎么做
电脑怎样改成无盘服务器
云服务器开通不了
天玑科技世界互联网大会
服务器浮动ip
安徽亳州网络安全宣传
网络安全检查工作gov
数据库的完整性与安全性总结
南京杭州上海软件开发工作
检查你的服务器