自定義控制元件——弄個甜甜圈吧(1): 起源

羽翼君發表於2017-11-20

【注:】本文首發於簡書,掘金會在同時同步傳送,其餘網站皆無授權。

歡迎瀏覽掘金主頁和簡書主頁,我只是一枚普通的工程師-V-

喜歡自定義控制元件,也喜歡分享我的思路,希望能得到你的批評和建議,也希望能幫到你

【簡書:羽翼君】
github:github.com/razerdp/Ani…

作為一枚有追求的程式設計師,既然沒法拿刀去捅產品,那隻好做的比產品的設計圖更加好吧——來自“我”.


寫在前面:本篇為起源,暫無涉及程式碼,僅涉及想法和一些進度,後續會慢慢更新

前言

YaHo~ 好久不見,也好久沒在簡書寫文章了,我是一起擼個朋友圈的作者,雖然好久好久沒在朋友圈文集裡寫文章了(原因在文集裡有《再談朋友圈專案》),但是朋友圈專案我可是一直都有維護的哦~從來都木有落下

如果感興趣,您可以看看朋友圈專案:github.com/razerdp/Fri…

嗯,介紹扯完,接下來就進入正題吧

起源

作為程式設計師,一個新的需求/控制元件的起源,很多時候都是來源於產品,所以,這次控制元件的誕生,其實很簡單,來源於一張優化點設計圖(只擷取部分,其餘部分不宜公開)

設計圖
設計圖

看起來這張圖so easy啦~對吧

3只paint,3個顏色,隨便畫畫,搞定~

可是,不知道為啥,看著這個甜甜圈還挺漂亮的,不甘心就這麼簡單的畫出來就完事。。。

於是心裡有個魅惑的聲音告訴我:“既然這個不急,只是優化點,那為何不優化徹底一點,做的比這貨更漂亮呢”

被魅惑的我,立馬熟悉的開啟AS,新建Project,填上Name,弄個類繼承View,然後。。。。

然後。。。他喵的然後怎麼幹啊!!!!


迷茫

相信很多人寫自定義控制元件都會有這個疑惑。。。我建好類了~ 我繼承好了View了~ 接下來,,,我不會做了TAT

其實不僅僅你們,就是我寫過不少的控制元件,現在建好一個類,我也偶爾會有這個情況。。。(嗯,可能寫的還是不夠多)

原因很簡單:所有的元素,都是心裡所想,並沒有做出一個具體的動畫效果和預覽,所以方向太多,一下子很迷茫

因為當我們想完成一個控制元件或者動畫效果是,我們往往很快就能在心裡確定好我們想要什麼效果,然而當我們真的要實施的時候,就會發現似乎不知道該怎麼把效果變成一行行的程式碼

在迷茫的時候,我的做法是,把我的期望寫下來

在心裡,我的期望是這樣的:

  • 我的甜甜圈會動
  • 我的甜甜圈可配置引數要多
  • 我的甜甜圈點選的時候要有個效果,至於效果,大概是浮上來呈現出Z軸上移的樣子,最好能加上陰影
  • 我的甜甜圈要簡單好上手。。。

期望寫下來,其實就是給自己確定一個TODO-LIST,也給自己一個方向,至少在不懂怎麼做的時候,把一個小點做出來再說,畢竟第一版的程式碼,都是很ugly的。。。

在我把上面的每個小點做出來後,目前我的甜甜圈進度是這樣的:

展開動畫
展開動畫

點選動畫
點選動畫

文字描述
文字描述


選定方案

迷茫之後,就要真正開始動手,而動手開工的前提,是需要確定好自己的工具

比如按照我上面所寫的期望,我會這樣去逐步確定我的方案(部分)

  • 甜甜圈:

    • 繼承View,自己畫出來
  • 我的甜甜圈會動

    • 使用animation,通過數值變換來使甜甜圈慢慢生長
  • 我的甜甜圈可配置引數要多

    • 使用一個類用作引數配置,甜甜圈根據這個類來進行渲染
  • 我的甜甜圈點選的時候要有個效果,至於效果,大概是浮上來呈現出Z軸上移的樣子,最好能加上陰影

    • 通過大小變化+paint的BlurMaskFilter使邊緣發光模擬出一個視覺欺騙,看起來像選中浮起一樣
  • 我的甜甜圈要簡單好上手

    • 暴露的api儘量的少,內部程式碼封裝儘量內聚,多使用介面抽象
  • 其他期望。。。做著做著就會產生的了


開工

當你真的要開始寫了,我給出我的建議,不管你的程式碼好還是不好,不管你對自己能否實現有沒有一個信心,我都建議,你要把你的程式碼儘可能的給別人看,比如github,比如技術交流論壇,比如寫技術文章

總之就是要分享給別人看,通過大家的批評,或者讚賞,不斷的激勵著你,不斷的在無形中督促著你,你會不自覺的去想方設法提升程式碼質量,提升封裝質量,提升你的技術水平

所以,在建好專案之前,我們,就先Push到github吧~

github:github.com/razerdp/Ani…

下一篇:自定義控制元件——弄個甜甜圈吧(2): 搭建

相關文章