在Android中画圆形图片的几种办法.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在Android中画圆形图片的几种办法

在Android中画圆形图片的几种办法 2014-09-23 14:17 Sam blog.isming.me 字号: HYPERLINK javascript:setfont(12); \t _self T |  HYPERLINK javascript:setfont(16); \t _self T 在开发中经常会有一些需求,比如显示头像,显示一些特殊的需求,将图片显示成圆角或者圆形或者其他的一些形状。但是往往我们手上的图片或者从服务器 获取到的图片都是方形的。这时候就需要我们自己进行处理,将图片处理成所需要的形状。正如茴香豆的的“茴”写法大于一种,经过我的研究,画出特殊图片的方 法也不是一种,我发现了三种,且听我一一道来。 AD:  HYPERLINK /course/course_id-1189.html \t _blank 2014WOT全球软件技术峰会北京站 课程视频发布  HYPERLINK /2014shenzhen/ \t _blank 11月21日-22日 与WOT技术大会相约深圳 现在抢票 在开发中经常会有一些需求,比如显示头像,显示一些特殊的需求,将图片显示成圆角或者圆形或者其他的一些形状。但是往往我们手上的图片或者从服务器 获取到的图片都是方形的。这时候就需要我们自己进行处理,将图片处理成所需要的形状。正如茴香豆的的“茴”写法大于一种,经过我的研究,画出特殊图片的方 法也不是一种,我发现了三种,且听我一一道来。 使用Xfermode 两图相交方式 通过查找资料发现android中可以设置画笔的Xfermode即相交模式,从而设置两张图相交之后的显示方式,具体模式见下图,源码可以去android apidemo。(SRC 为我们要画到目标图上的图即原图,DST为目标图) 由上图可以看到,如果我们需要画一个圆形的图,可以在画布上面先画一个跟目标大小一样的圆,然后xfermode选择SRC_IN,再讲我们的头像 或者其他图画上去就可以了。同样也可以先画我们的图,再画圆,不过xfermode要选择DST_IN。两种都可以实现我们需要的效果。示例代码如下: Paint?p?=?new?Paint();? p.setAntiAlias(true);?//去锯齿? p.setColor(Color.BLACK);? p.setStyle(Paint.Style.STROKE);? Canvas?canvas?=?new?Canvas(bitmap);?//bitmap就是我们原来的图,比如头像? p.setXfermode(new?PorterDuffXfermode(Mode.DST_IN));?//因为我们先画了图所以DST_IN? int?radius?=?bitmap.getWidth;?//假设图片是正方形的? canvas.drawCircle(radius,?radius,?radius,?p);?//r=radius,?圆心(r,r)? 以上就是简单的示例,根据以上的16种模式你其实还可以做出更多效果。另外,只要你给一张相交图,那张图形状什么样,我们的图就可以显示成什么样。 通过裁剪画布区域实现指定形状的图形 Android中Canvas提供了ClipPath, ClipRect, ClipRegion 等方法来裁剪,通过Path, Rect ,Region 的不同组合,Android几乎可以支持任意形状的裁剪区域。因此,我们几乎可以获取任意形状的区域,然后在这个区域上画图,就可以获得,我们要的图片 了,直接看示例。 int?radius?=?src.getWidth()?/?2; //src为我们要画上去的图,跟上一个示例中的bitmap一样。? Bitmap?dest?=?Bitmap.createBitmap(src.getWidth(),?src.getHeight(),?Bitmap.Config.ARGB_8888);? Canvas?c?=?new?Canvas(dest);? Paint?paint?=?new?Paint();? paint.setColor(Color.BLACK);? paint.setAntiAlias(true);? Path?path?=?new?Path();? path.addCircle(radius,?radius,?radius,?Path.Direction.CW);? c.clipPath(path);?//裁剪区域? c.drawBitmap(src,?0,?0,?paint);//把图画上去? 使用BitmapShader 直接先看示例 int?radius?=?src.getWidth()?/?2;? B

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档