【注:】本文首发于简书,掘金会同步发送,其余网站皆无授权。
欢迎浏览掘金主页和简书主页,我只是一枚普通的工程师-V-
喜欢自定义控件,也喜欢分享我的思路,希望能得到你的批评和建议,也希望能帮到你
作为一枚有追求的程序员,既然没法拿刀去捅产品,那只好做的比产品的设计图更加好吧——来自“我”.
写在前面:本篇为起源,暂无涉及代码,仅涉及想法和一些进度,后续会慢慢更新
前言
YaHo~ 好久不见,也好久没在简书写文章了,我是一起撸个朋友圈的作者,虽然好久好久没在朋友圈文集里写文章了(原因在文集里有《再谈朋友圈项目》),但是朋友圈项目我可是一直都有维护的哦~从来都木有落下
如果感兴趣,您可以看看朋友圈项目:https://github.com/razerdp/FriendCircle
嗯,介绍扯完,接下来就进入正题吧
起源
作为程序员,一个新的需求/控件的起源,很多时候都是来源于产品,所以,这次控件的诞生,其实很简单,来源于一张优化点设计图(只截取部分,其余部分不宜公开):
看起来这张图so easy啦~对吧
3只paint,3个颜色,随便画画,搞定~
可是,不知道为啥,看着这个甜甜圈还挺漂亮的,不甘心就这么简单的画出来就完事。。。
于是心里有个魅惑的声音告诉我:“既然这个不急,只是优化点,那为何不优化彻底一点,做的比这货更漂亮呢”
被魅惑的我,立马熟悉的打开AS,新建Project,填上Name,弄个类继承View,然后。。。。
然后。。。他喵的然后怎么干啊!!!!
迷茫
相信很多人写自定义控件都会有这个疑惑。。。我建好类了~ 我继承好了View了~ 接下来,,,我不会做了TAT
其实不仅仅你们,就是我写过不少的控件,现在建好一个类,我也偶尔会有这个情况。。。(嗯,可能写的还是不够多)
原因很简单:所有的元素,都是心里所想,并没有做出一个具体的动画效果和预览,所以方向太多,一下子很迷茫
因为当我们想完成一个控件或者动画效果是,我们往往很快就能在心里确定好我们想要什么效果,然而当我们真的要实施的时候,就会发现似乎不知道该怎么把效果变成一行行的代码
在迷茫的时候,我的做法是,把我的期望写下来
在心里,我的期望是这样的:
- 我的甜甜圈会动
- 我的甜甜圈可配置参数要多
- 我的甜甜圈点击的时候要有个效果,至于效果,大概是浮上来呈现出Z轴上移的样子,最好能加上阴影
- 我的甜甜圈要简单好上手。。。
期望写下来,其实就是给自己确定一个TODO-LIST,也给自己一个方向,至少在不懂怎么做的时候,把一个小点做出来再说,毕竟第一版的代码,都是很ugly的。。。
在我把上面的每个小点做出来后,目前我的甜甜圈进度是这样的:
选定方案
迷茫之后,就要真正开始动手,而动手开工的前提,是需要确定好自己的工具
比如按照我上面所写的期望,我会这样去逐步确定我的方案(部分)
-
甜甜圈:
- 继承
View
,自己画出来
- 继承
-
我的甜甜圈会动
- 使用animation,通过数值变换来使甜甜圈慢慢生长
-
我的甜甜圈可配置参数要多
- 使用一个类用作参数配置,甜甜圈根据这个类来进行渲染
-
我的甜甜圈点击的时候要有个效果,至于效果,大概是浮上来呈现出Z轴上移的样子,最好能加上阴影
- 通过大小变化+paint的BlurMaskFilter使边缘发光模拟出一个视觉欺骗,看起来像选中浮起一样
-
我的甜甜圈要简单好上手
- 暴露的api尽量的少,内部代码封装尽量内聚,多使用接口抽象
其他期望。。。做着做着就会产生的了
开工
当你真的要开始写了,我给出我的建议,不管你的代码好还是不好,不管你对自己能否实现有没有一个信心,我都建议,你要把你的代码尽可能的给别人看,比如github,比如技术交流论坛,比如写技术文章
总之就是要分享给别人看,通过大家的批评,或者赞赏,不断的激励着你,不断的在无形中督促着你,你会不自觉的去想方设法提升代码质量,提升封装质量,提升你的技术水平
所以,在建好项目之前,我们,就先Push到github吧~