最近公司让我做个头像的显示功能,这个头像有点但疼痛,形状竟然像个盾牌!呵呵哒?!各种曲线,贝塞尔线,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制作相关推荐

  1. java 自定义形状按钮_制作自定义背景Button按钮、自定义形状Button的全攻略

    在Android开发应用中,默认的Button是由系统渲染和管理大小的.而我们看到的成功的移动应用,都是有着酷炫的外观和使用体验的.因此,我们在开发产品的时候,需要对默认按钮进行美化.在本篇里,笔者结 ...

  2. tableau自定义形状功能制作超市盈利情况表

    前言 目标是制作一张英国城市的超市盈利情况表,希望生动一点,所以我是用了自定义形状功能,用手推车颜色和位置标示城市的盈亏情况,示例如下: 一.导入png格式文件 首先我在这里推荐一个网站,里面有很多合 ...

  3. 【UE4 C++】读取灰度图/RGB图中的像素值生成自定义形状的模型分布

    效果图 一.PS制作一张自定义形状的像素图 导出为PNG图片 二.UE4创建函数库读取图片像素颜色 1.新建C++类 2.头文件中添加函数 public:UFUNCTION(BlueprintCall ...

  4. Android - 实现各种形状的ImageView

    实现各种形状的ImageView要用到BitmapShader类,这个类的介绍如下: BitmapShader是Shader的子类,可以通过Paint.setShader(Shader shader) ...

  5. draw.io创建自定义形状

    使用文本编辑器在diagrams.net中创建自定义形状 你可以在diagrams.net中创建自己的自定义模板(形状),通过XML格式描述模板中组件的几何形状.连接点和样式. 提示:你可以将自定义模 ...

  6. vs自定义安装包的制作

    vs自定义安装包的制作 1 选中项目-右键- 视图- 文件系统, 然后选中左边列表上的应用程序文件夹-右键-添加-项目输出-主输出-确定 2  选中项目-右键- 视图-自定义操作, 然后选中主输出来自 ...

  7. ps自定义形状工具_【福利】3000款PS自定义形状免费打包下载

    PS形状介绍 获取方式见文末 ps自定义形状素材包包含例如:品牌标志Logo.动物形状,花卉形状,圆圈形状,边框形状,人物形状,海洋生物形状,南瓜形状,万圣节形状,扑克牌形状等等.合计3000款!如果 ...

  8. android 自定义圆形pop,Android布局自定义Shap圆形ImageView可以单独设置背景与图片...

    一.图片预览: 一.实现功能: 需求要实现布局中为圆形图片,图片背景与图标分开且合并到一个ImageView. 二.具体实现: XML中布局中定义ImageView,关健设置两个参数 Android: ...

  9. 易语言数据类型与c 对照,易语言利用自定义数据类型和数组. 制作键对值操作类/内存配置...

    易语言利用自定义数据类型和数组.  制作键对值操作类/内存配置.版本 2 .支持库 spec .子程序 _临时子程序 .局部变量 test, classKeyValue .局部变量 局_取值方法2,  ...

  10. power bi自定义地图_如何使用自定义形状图在Power BI中创建地理图

    power bi自定义地图 介绍 (Introduction) This is the third article of a series dedicated to discovering geogr ...

最新文章

  1. 94年出生,如今985高校博士生导师!
  2. 苹果服务器消息转发,iphone-与APNS服务器进行交互以将推送通知发...
  3. sleep() 函数
  4. ubuntu下的win交叉编译
  5. 日期控件的点击事件,在js中添加callback属性,不在html中直接添加
  6. Jquery中使用定时器setInterval和setTimeout
  7. 基金本子提交在即!这11个问题现在改还来得及
  8. PixelShuffle特征图的上采样的方法
  9. jquery时期到计时插件
  10. btrfs文件系统学习总结
  11. 【图像处理】基于matlab GUI打靶仿真系统【含Matlab源码 1043期】
  12. 使用计算机制图的心得,学习cad制图心得体会
  13. linux系统版本下载
  14. 高分二号影像数据预处理及裁剪过程
  15. Unity3D上路_01-2D太空射击游戏
  16. linux 可道云_帮助 - 可道云-私有云存储协同办公平台_企业网盘_企业云盘_网盘_云盘...
  17. 数据结构例程——串的模式匹配(Brute-Force算法)
  18. SpringCloud2.0 集成分布式事务管理 LCN
  19. 数智融合加速驱动企业商业创新
  20. 程序猿生存指南-2 抽奖事件

热门文章

  1. C#全局钩子参考文章
  2. Photoshop2023最新版安装教程及下载
  3. 两相四线混合式步进电机用双H桥驱动电路之Multisim仿真及优化
  4. Cameralink多功能接口转换模块
  5. 微软笔试题 回忆(回文方面)
  6. 完整的连接器设计手册_连接器设计中,仿真技术提供了力学理论依据
  7. 流体力学专业常用网站集合
  8. 禁用计算机声卡设备,电脑声音被禁用了怎么办
  9. java实现区块链p2p网络_详解区块链P2P网络
  10. Linux查看端口命令