自定义形状的ImageView制作
最近公司让我做个头像的显示功能,这个头像有点但疼痛,形状竟然像个盾牌!呵呵哒?!各种曲线,贝塞尔线,Android能不能搞啊?果断去问度娘啊!一搜,卧槽,还不少呢!参考了一个github上的一个项目,结合自己的努力终于马马虎虎完成了。这里和我一样的小菜鸟分享一下经验。首先给大家说一下原理吧:利用Paint中的属性setXfermode设置图片相交模式,截取通过vector工具定义的矢量图形,得到我们想要的CustomImageView。自己总结的比较抽象,接下来我们一起写吧!
一、工具:Android Studio, Microsoft Expression Design。
大家可以在这里参考Github上的源码:
https://github.com/karthikraj-duraisamy/ShapesImage
这里有很多常见的图形的源码,很不错的资源。如果想自己设计图形,大家也要先看看这个项目。然后,请跟我来。。。
二、 用Microsoft Expression Design画出图形的轮廓
1.首先我们打开Expression Design软件并新建一个文件,高度和宽度可以自己设置,但是初学者最好和我设置一样的吧,便于学习,同时减少之后可能我没表达清楚给你带来的麻烦
2.Android的Vector是矢量图,我们首先导入我们想要截取图像的轮廓
3.选择贝塞尔线把它的轮廓勾勒出来,画图就不细讲啦,和coredraw和ps的方式差不多的,大家可以自己研究一下的。最终我们得到的图形是这样的(这个是我加了填充色的,便于大家看的清楚)。
好了提醒大家注意的地方到了,描完之后我们点击图形会自动显示出这个图形的最小外接矩形。我们将图形放大,使得它的高度和宽度与文档的高度和宽度重合!
4.导出图形的pathData信息数据(等一会儿别忘记路径)
5.之后我们用记事本打开导出的文件可以找到这么一段数据,这个就是图形的pathData数据,一会儿在Android Studio中我们要用到的:
6.接着打开我们的Android Studio,在res/drawable中新建一个cat.xml文件。仿照github源码中的写法。其中viewportHeight 和 viewportWidth与1.中的像素值保持一致。并且把图形的pathData数据设置进去,右边的 preView就可以看见了相应图形的轮廓,走到这步,你基本离成功不远了
(不知大家有没有遇到自定义imageView在android高版本下发生java.lang.IllegalArgumentException: Invalid pathData. Failure occurred at position 2 of path的错误。解决的方法是把pathdata中的F1去掉,如果不行应该就是其他的兼容问题了。希望能帮助到大家)
7.打开github项目的ShapeImage文件修改prepareDrawables()方法。这样ShapeImage就是我们定义的ImageView了,即CustomImageView!
private void prepareDrawables() {if (Build.VERSION.SDK_INT >= 21)mMaskDrawable = getResources().getDrawable(R.drawable.cat, null);else mMaskDrawable = getResources().getDrawable(R.drawable.cat);if (mMaskDrawable != null) {mMaskDrawable.setCallback(this);} }
8.我们可以直接拿来用的。src大家可以自己设置,scaleType属性别忘了设置,不然图形就变得千奇百怪的!
<com.jerry.hometext.ShapesImage android:layout_width="300dp" android:layout_height="300dp" android:scaleType="fitXY"
android:src="@mipmap/caoyuan" />
9.我以为完事大吉了,后来公司要我加个轮廓线,我当时就懵逼了,我想了个尴尬的主意,写了两个ImageView重合起来,下面的ImageView宽高稍大一点,然后在父控件中居中,才形成这样一个效果。
这是个笨办法咯,希望大家有好的方法指点,互相交流,谢谢!
自定义形状的ImageView制作相关推荐
- java 自定义形状按钮_制作自定义背景Button按钮、自定义形状Button的全攻略
在Android开发应用中,默认的Button是由系统渲染和管理大小的.而我们看到的成功的移动应用,都是有着酷炫的外观和使用体验的.因此,我们在开发产品的时候,需要对默认按钮进行美化.在本篇里,笔者结 ...
- tableau自定义形状功能制作超市盈利情况表
前言 目标是制作一张英国城市的超市盈利情况表,希望生动一点,所以我是用了自定义形状功能,用手推车颜色和位置标示城市的盈亏情况,示例如下: 一.导入png格式文件 首先我在这里推荐一个网站,里面有很多合 ...
- 【UE4 C++】读取灰度图/RGB图中的像素值生成自定义形状的模型分布
效果图 一.PS制作一张自定义形状的像素图 导出为PNG图片 二.UE4创建函数库读取图片像素颜色 1.新建C++类 2.头文件中添加函数 public:UFUNCTION(BlueprintCall ...
- Android - 实现各种形状的ImageView
实现各种形状的ImageView要用到BitmapShader类,这个类的介绍如下: BitmapShader是Shader的子类,可以通过Paint.setShader(Shader shader) ...
- draw.io创建自定义形状
使用文本编辑器在diagrams.net中创建自定义形状 你可以在diagrams.net中创建自己的自定义模板(形状),通过XML格式描述模板中组件的几何形状.连接点和样式. 提示:你可以将自定义模 ...
- vs自定义安装包的制作
vs自定义安装包的制作 1 选中项目-右键- 视图- 文件系统, 然后选中左边列表上的应用程序文件夹-右键-添加-项目输出-主输出-确定 2 选中项目-右键- 视图-自定义操作, 然后选中主输出来自 ...
- ps自定义形状工具_【福利】3000款PS自定义形状免费打包下载
PS形状介绍 获取方式见文末 ps自定义形状素材包包含例如:品牌标志Logo.动物形状,花卉形状,圆圈形状,边框形状,人物形状,海洋生物形状,南瓜形状,万圣节形状,扑克牌形状等等.合计3000款!如果 ...
- android 自定义圆形pop,Android布局自定义Shap圆形ImageView可以单独设置背景与图片...
一.图片预览: 一.实现功能: 需求要实现布局中为圆形图片,图片背景与图标分开且合并到一个ImageView. 二.具体实现: XML中布局中定义ImageView,关健设置两个参数 Android: ...
- 易语言数据类型与c 对照,易语言利用自定义数据类型和数组. 制作键对值操作类/内存配置...
易语言利用自定义数据类型和数组. 制作键对值操作类/内存配置.版本 2 .支持库 spec .子程序 _临时子程序 .局部变量 test, classKeyValue .局部变量 局_取值方法2, ...
- power bi自定义地图_如何使用自定义形状图在Power BI中创建地理图
power bi自定义地图 介绍 (Introduction) This is the third article of a series dedicated to discovering geogr ...
最新文章
- 94年出生,如今985高校博士生导师!
- 苹果服务器消息转发,iphone-与APNS服务器进行交互以将推送通知发...
- sleep() 函数
- ubuntu下的win交叉编译
- 日期控件的点击事件,在js中添加callback属性,不在html中直接添加
- Jquery中使用定时器setInterval和setTimeout
- 基金本子提交在即!这11个问题现在改还来得及
- PixelShuffle特征图的上采样的方法
- jquery时期到计时插件
- btrfs文件系统学习总结
- 【图像处理】基于matlab GUI打靶仿真系统【含Matlab源码 1043期】
- 使用计算机制图的心得,学习cad制图心得体会
- linux系统版本下载
- 高分二号影像数据预处理及裁剪过程
- Unity3D上路_01-2D太空射击游戏
- linux 可道云_帮助 - 可道云-私有云存储协同办公平台_企业网盘_企业云盘_网盘_云盘...
- 数据结构例程——串的模式匹配(Brute-Force算法)
- SpringCloud2.0 集成分布式事务管理 LCN
- 数智融合加速驱动企业商业创新
- 程序猿生存指南-2 抽奖事件