首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
微信
> 详细
Android 模仿微信发送图片 钟罩效果
时间:
2015-02-10 18:35:47
阅读:
284
评论:
0
收藏:
0
[点我收藏+]
标签:
参考资料http://trylovecatch.iteye.com/blog/1189452 http://bbs.51cto.com/thread-1031415-1.html### 1、添加资源文件:attrs.xml 复制内容到剪贴板 代码:
2、创建自定义组件MaskImage.java 复制内容到剪贴板 代码: package com.xzw.mask.widget; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.util.AttributeSet; import android.widget.ImageView; import com.xzw.mask.R; public class MaskImage extends ImageView{ int mImageSource=0; int mMaskSource=0; RuntimeException mException; public MaskImage(Context context, AttributeSet attrs) { super(context, attrs); TypedArray typedArray = getContext().obtainStyledAttributes(attrs, R.styleable.MaskImage, 0, 0); mImageSource = typedArray.getResourceId(R.styleable.MaskImage_image, 0); mMaskSource = typedArray.getResourceId(R.styleable.MaskImage_mask, 0); if (mImageSource == 0 || mMaskSource == 0) { mException = new IllegalArgumentException(typedArray.getPositionDescription() + ": The content attribute is required and must refer to a valid image."); } if (mException != null) throw mException; /** * 主要代码实现 */ //获取图片的资源文件 Bitmap original = BitmapFactory.decodeResource(getResources(), mImageSource); //获取遮罩层图片 Bitmap mask = BitmapFactory.decodeResource(getResources(), mMaskSource); Bitmap result = Bitmap.createBitmap(mask.getWidth(), mask.getHeight(), Config.ARGB_8888); //将遮罩层的图片放到画布中 Canvas mCanvas = new Canvas(result); Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); //设置两张图片相交时的模式 paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); mCanvas.drawBitmap(original, 0, 0, null); mCanvas.drawBitmap(mask, 0, 0, paint); paint.setXfermode(null); setImageBitmap(result); setScaleType(ScaleType.CENTER); typedArray.recycle(); } } 3、在布局文件中添加 复制内容到剪贴板 代码:
这里要记得添加namespace也就是xml的命名空间 复制内容到剪贴板 代码: xmlns:maskimage="http://schemas.android.com/apk/res/com.xzw.mask" xmlns:maskimage的自我们自定义的命名空间方式。 命名规则是: http://schemas.android.com/apk/res/包名 这样代码就实现了遮罩效果了。说了这么多什么是遮罩还没说呢?就是有两张图片,一张图片放在另外一张图片的上面,放在上面的图片叫做遮罩层,下面的叫做被遮罩层,两张图片重叠的部分会显示出来,就形成了遮罩的效果。遮罩用在哪里了,就比如说头像,头像原来是正方形,突然想变成圆形的,这样搞就很简单的实现了。 嘿嘿希望这个功能对大家有帮助哈。 源码: mask.zip (1.06 MB) 参考: http://stackoverflow.com/questions/12614542/maskingcrop-image-in-frame http://lipeng88213.iteye.com/blog/1189452
Android 模仿微信发送图片 钟罩效果
标签:
原文地址:http://www.cnblogs.com/liaolandemengxiang/p/4284440.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
微信公众号如何做数据分析
2021-07-26
Hbuild打开微信小程序失败
2021-07-26
小程序架构设计(一)
2021-07-12
基于uni-app全端弹框组件uaPopup「兼容h5+小程序+app端|nvue」
2021-07-12
【学习记录】微信小程序:前端开发实战
2021-07-05
小程序接口请求封装
2021-07-05
uView下拉框在微信小程序里不显示问题
2021-07-02
小程序图片开发工具能显示真机调试和体验版不显示
2021-07-02
爬取小程序所有教程scrapy
2021-07-01
小程序开发中 在 wxml格式化 属性断行
2021-06-30
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!