Android实现圆形图片

 情景再现:

写Android程序也有一段时间了,今天突然被问怎么实现一个圆形图片,很多app图像是圆形的。但是用户上传的图像可不是圆的,所以问题就来了,需要我们代码实现圆形图片。但是大脑飞转想到第三方图片缓存工具ImageLoader。但是这个只能设置圆角,很难设置实现规则的圆形图片。然后又想只能通过paint和画布去画了,但是只能画一个圆,最后怎么让这个圆填充上图片就成问题了。最后没能回答他的问题。这个时候比较害羞,以前只用过圆角图片,没弄过这种圆形图片啊。所以晚上就查了下资料

实现:

/**
         * 根据原图和变长绘制圆形图片
         *
         * @param source
         * @param min
         * @return
         */
        private Bitmap createCircleImage(Bitmap source, int min)
        {
            final Paint paint = new Paint();
            paint.setAntiAlias(true);
            Bitmap target = Bitmap.createBitmap(min, min, Config.ARGB_8888);
            /**
             * 产生一个同样大小的画布
             */
            Canvas canvas = new Canvas(target);
            /**
             * 首先绘制圆形
             */
            canvas.drawCircle(min / 2, min / 2, min / 2, paint);
            /**
             * 使用SRC_IN
             */
            paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
            /**
             * 绘制图片
             */
            canvas.drawBitmap(source, 0, 0, paint);
            return target;
        }

其实主要靠:paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));这行代码,为什么呢,我给大家解释下,SRC_IN这种模式,两个绘制的效果叠加后取交集展现后图,也就是先用paint在画布中画一个圆,然后再用图像去和这个圆叠加。交集后得到一个圆,并且用图片填充这个圆。怎么说呢,咱们第一个绘制的是个圆形,第二个绘制的是个Bitmap,于是交集为圆形,展现的是BItmap,就实现了圆形图片效果。

时间: 2024-08-07 23:45:19

Android实现圆形图片的相关文章

Android自定义圆形图片

最近研究了一下圆形图片控件,之前一直是用别人写好的类,自己写一下,发现对canvas理解更深入了. 基本思路: 自定义CircleImageView继承自ImageView,在canvas中新建一个图层,先把要显示的头像绘制在上面,再绘制圆形遮罩,设置画笔模式为:当两个图像重叠时,显示交叉部分下面的图像. 源码如下:(直接拿去用就可以了) package com.lt.DrawDemo; import android.content.Context; import android.graphic

Android程序设计-圆形图片的实现

在android中,google只提供了对图片的圆形操作,而没有实现对图片的圆形操作,所以我们无法实现上述操作,在此我们将使用框架进行设计(下述框架为as编写): https://github.com/monsterLin/RoundedImageView https://github.com/pungrue26/SelectableRoundedImageView https://github.com/hdodenhof/CircleImageView https://github.com/M

Android自定义设置圆形图片控件

注:这篇文章是转载alan_biao博主的一篇文章,正好用到,觉得里面代码很精髓,贴出来并给与链接供需要的童鞋下载使用!已贴出核心代码和提供源码地址. Android自定义圆形图片,可设置最多两个的外边框,包括从网络获取图片显示. 1.解决图片锯齿问题. 2.解决图片变形问题. 效果图: 原始图片: 原文地址和源码下载链接:http://blog.csdn.net/alan_biao/article/details/17379925

Android圆形图片--自定义控件

Android圆形图片控件效果图如下: 代码如下: RoundImageView.java package com.dxd.roundimageview; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas

Android 完美实现图片圆角和圆形(对实现进行分析)

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24555655 本来想在网上找个圆角的样例看一看,不尽人意啊,基本都是官方的Demo的那张原理图.稍后会贴出. 于是自己自己定义了个View,实现图片的圆角以及圆形效果.效果图: 第一个是原图,第二个是圆形效果.第三第四设置了不同的圆角大小. 准备改变一个博客的风格,首先给大家讲一下原理,让大家明确了,然后再贴代码,不然能够直接看那么长的代码也比較痛苦.核心代码事实上就那么几行:

Android圆形图片--自己定义控件

Android圆形图片控件效果图例如以下: 代码例如以下: RoundImageView.java package com.dxd.roundimageview; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Ca

Android 完美实现图片圆角和圆形

本来想在网上找个圆角的例子看一看,不尽人意啊,基本都是官方的Demo的那张原理图,稍后会贴出.于是自己自定义了个View,实现图片的圆角以及圆形效果.效果图: 好了,原理和核心代码解释完成.下面开始写自定义View. 1.自定义属性: 第一个是原图,第二个是圆形效果,第三第四设置了不同的圆角大小. 准备改变一个博客的风格,首先给大家讲一下原理,让大家明白了,然后再贴代码,不然可以直接看那么长的代码也比较痛苦,核心代码其实就那么几行: 核心代码分析: /** * 绘制 */ @Override p

Android圆形图片自定义控件

Android圆形图片控件效果图如下: 代码如下: RoundImageView.java package com.dxd.roundimageview; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas

Android圆角图片和圆形图片实现总结

1. 概述 Android研发中经常会遇见圆角或者圆形图片的展示,但是系统中ImageView并不能直接支持,需要我们自己做一些处理,来实现圆角图片或者圆形图片,自己最近对这块的实现做了一下总结,看一下几种实现方法. 图层叠加,上层覆盖一层蒙版,遮挡图片,让图片展示出圆角或者圆形效果 重新绘制 BitmapShader Xfermode RoundedBitmapDrawable CardView,使用官方控件,自动裁剪,达到圆角或者圆形效果.(5.0以上系统) 第一种方法,很傻,不太优雅,不推