版權(quán)聲明:本文原創(chuàng)發(fā)布于公眾號 wingjay,轉(zhuǎn)載請務(wù)必注明出處! http://www.reibang.com/p/cf496fc408b2
2016/12/02 更新:
新文章《我的第一款全棧side project》介紹了我在開發(fā)簡詩 v2.0 中對Android端及服務(wù)端累積的一些經(jīng)驗(yàn)宿亡。
2016/11/09 更新:
v2.0正式版
下載地址:http://fir.im/vd1r 糕伐。
該正式版中本人添加了服務(wù)端,支持了注冊登錄十厢、數(shù)據(jù)同步和截屏分享,而且添加了不少很有意思的小功能。
Android 和 Server 源碼: https://github.com/wingjay/jianshi
一麸粮、簡介
實(shí)現(xiàn)一款具備cool屬性
的產(chǎn)品是眾多獨(dú)立開發(fā)者都渴望的。
然而镜廉,很多獨(dú)立開發(fā)者之所以遲遲無法下手弄诲,并非熱情不夠,而是對于整個開發(fā)流程的未知與畏懼娇唯。而本文就是介紹本人耗時一天左右完成的一款A(yù)ndroid產(chǎn)品的開發(fā)流程
,從idea
威根,到產(chǎn)品原型及設(shè)計(jì)
,再到code架構(gòu)與編寫
视乐。
希望讀者看完后能對獨(dú)立開發(fā)
有不同的認(rèn)識洛搀,然后揮舞起手中的鍵盤,開發(fā)出很cool的個人產(chǎn)品佑淀。
二留美、開發(fā)流程
1. idea
首先,你要有一個idea。好的想法來自哪呢谎砾?生活逢倍。多觀察生活中點(diǎn)滴,每當(dāng)你對現(xiàn)有事物有要抓狂的感覺時景图,往往就意味著一個絕妙idea的誕生较雕。
當(dāng)然,不要再鬧`只差一個程序員`的系列笑話啦挚币!
舉個例子亮蒋,本人有點(diǎn)文藝情懷,非常希望有個好的記錄工具讓我以一種優(yōu)雅而復(fù)古的方式記錄文字妆毕。然而慎玖,現(xiàn)有的記錄工具大都集社交、多種信息流為一體笛粘,絢麗的界面反而讓我感覺到一種缺失趁怔,找不回曾經(jīng)字字斟酌的寫作感覺。
所以薪前,本文要介紹的就是我為自己開發(fā)的一款(自認(rèn)為)優(yōu)雅润努、簡潔的寫作應(yīng)用
。
2. 產(chǎn)品原型和設(shè)計(jì)稿
這一關(guān)示括,很多開發(fā)者不重視且不擅長铺浇。
不過也能理解,一般而言例诀,developer更加注重代碼層面的美觀随抠,邏輯的抽象與性能的優(yōu)化。然而繁涂,作為獨(dú)立開發(fā)者拱她,我們的目標(biāo)是一款受用戶喜愛的產(chǎn)品,而不僅是深藏巷中的好酒
扔罪。而用戶對一款產(chǎn)品最直觀的感受秉沼,就是界面與交互,只有當(dāng)用戶對UI矿酵、UX滿意之后唬复,才會去深入感受產(chǎn)品的功能與速度。
所以全肮,一位合格的獨(dú)立開發(fā)者敞咧,一定會在第一時間找到自身產(chǎn)品的槽點(diǎn)然后罵罵咧咧又毫不猶豫地把它修掉。
文末辜腺,本人推薦了一些相關(guān)的工具休建,可以幫助開發(fā)者快速設(shè)計(jì)產(chǎn)品原型乍恐。
本文的設(shè)計(jì)草稿來源于Kevin在《Producter》一書中的想法,下圖為草稿圖紙测砂。
從設(shè)計(jì)圖紙中可以看出茵烈,該設(shè)計(jì)很古典、簡潔砌些,而又不失個性呜投,正好是我所追求的。
ok存璃,下面開始寫代碼仑荐!
3. Android架構(gòu)
各位看官不要急著啪啪啪敲鍵盤,先思考下這個app會涉及到哪些技術(shù)細(xì)節(jié)有巧,以防后知后覺释漆。
a. 自定義View悲没,容易發(fā)現(xiàn)篮迎,該產(chǎn)品有三個特點(diǎn),一是`紅點(diǎn)按鈕`示姿,二是`豎排文字`甜橱,需要自己寫新的view來實(shí)現(xiàn);
三是`字體`栈戳,設(shè)計(jì)稿采用了`康熙字典體`與`文悅古仿宋`岂傲。
b. SQLiteDabase數(shù)據(jù)庫.這款產(chǎn)品核心功能是`寫和讀`,第一版本暫不作服務(wù)器端開發(fā)(后續(xù)本人會抽空實(shí)現(xiàn)后臺)子檀。
c. 時間镊掖,內(nèi)部的時間會以`中文繁體`的形式顯示給用戶,如`2015.10.6`會顯示成`二零一五年 十月 六日`褂痰,
所以需要實(shí)現(xiàn)一個`時間轉(zhuǎn)換器`把數(shù)字轉(zhuǎn)換為繁體時間格式亩进。
d. 還有一個容易被忽視的,`布局`缩歪。設(shè)計(jì)稿里看似排版簡潔归薛,實(shí)際下了很大功夫在`文字排版及間距設(shè)計(jì)`上。
作為一款記錄工具匪蝙,文字排版可謂是核心一環(huán)主籍,直接影響用戶體驗(yàn)。
4. Code實(shí)現(xiàn)
好了逛球,下面就開始舞動鍵盤啦千元。
想好產(chǎn)品的名字,本款產(chǎn)品直接命名為
<簡詩>
颤绕,寓意簡單的小詩幸海,簡單的生活
蜡歹。Android studio創(chuàng)建一個新工程。包名
com.wingjay.jianshi
涕烧。創(chuàng)建需要的Activity月而。這里包含了
SplashActivity[產(chǎn)品介紹頁]
,MainActivity[主頁面]
,EditActivity[編輯界面]
,ViewActivity[瀏覽界面]
。這些是主要的议纯,其它的后續(xù)再加父款。-
先完成
視圖層
的實(shí)現(xiàn)。-
SplashActivity[最初產(chǎn)品介紹頁]
可以放一張簡潔的介紹頁面瞻凤,用handler定時1秒鐘跳轉(zhuǎn)到主頁面憨攒。 -
MainActivity[主頁面]
,先實(shí)現(xiàn)豎排文字VerticalTextView
阀参,原理很簡單肝集,給每個文字字符后加'\n'
即可。然后實(shí)現(xiàn)紅點(diǎn)按鈕RedPointView
蛛壳,寫一個紅色circle shape作為背景杏瞻,允許更改里面的text內(nèi)容。 -
EditActivity[編輯界面]
和ViewActivity[瀏覽界面]
布局簡單衙荐,主要包含兩個EditText
和 一個RedPointView
來執(zhí)行保存等捞挥,這里我們先不實(shí)現(xiàn)豎排文字編輯,只要橫排即可忧吟。 -
字體
砌函,本人采用了TpldKhangXiDictTrial.otf
暫時作為主要字體,不過溜族,在編輯和瀏覽界面的字體仍保持系統(tǒng)默認(rèn)讹俊,防止有些字體丟失之類問題。
-
-
然后進(jìn)行
邏輯層
的實(shí)現(xiàn)煌抒。-
時間轉(zhuǎn)換器
仍劈,即將數(shù)字時間轉(zhuǎn)化為繁體中文時間,2015.10.6
->二零一五年 十月 六日
摧玫,對于年
耳奕,可逐個字符轉(zhuǎn)換:2
->二
,0
->零
。對于月
和日
诬像,若小于10則逐個轉(zhuǎn)換屋群,但大于等于10要注意,如11
->十一
而非一一
坏挠,21
->二十一
而非二一
芍躏。 -
獲取時間戳
,上面講了將數(shù)字時間轉(zhuǎn)換為繁體時間降狠,那么如何獲取數(shù)字時間呢对竣?
這里采用Joda Time
來獲取時間如getYear(), getMonthOfYear(), getDayOfMonth()
即可庇楞。在數(shù)據(jù)庫及應(yīng)用內(nèi)部使用的都是Joda Time轉(zhuǎn)換來的秒級時間戳,只有在顯示給用戶時才把時間戳傳給轉(zhuǎn)換器去顯示否纬。
-
-
最后是
數(shù)據(jù)層
的實(shí)現(xiàn)-
數(shù)據(jù)庫設(shè)計(jì)
吕晌,我們要設(shè)計(jì)一張日記表
,包含了
-
id
自增長device_id
設(shè)備id临燃,以后如果要添加帳號及上傳服務(wù)器可以此標(biāo)記每個日記來源title
,content
記錄內(nèi)容created_time
,modified_time
更改時間睛驳,存儲以秒為基準(zhǔn)的時間戳-
deleted_flag
刪除標(biāo)記,若為1
則表示刪除- SQLiteDatabase膜廊,需要實(shí)現(xiàn)兩個類:
DbOpenHelper
和DbUtil
乏沸。DbOpenHelper
繼承SQLiteOpenHelper
,主要負(fù)責(zé)db的創(chuàng)建更新和對外提供db實(shí)例來進(jìn)行讀寫爪瓜。DbUtil
主要封裝db操作蹬跃,如讀取日記getDiary(long diaryId)
,該函數(shù)會利用DbOpenHelper
獲取SQLiteDatabase
實(shí)例來進(jìn)行讀寫铆铆。
- SQLiteDatabase膜廊,需要實(shí)現(xiàn)兩個類:
三蝶缀、粗糙版demo
完成上面幾個步驟后,基本可以搭建產(chǎn)品demo算灸,正常實(shí)現(xiàn)記錄與閱讀的功能扼劈。而且產(chǎn)品也具有一定味道驻啤,不至于湮沒大眾菲驴。讀者只需要進(jìn)行一些bug調(diào)試工作即可。
下面給大家看第一版粗糙的demo
四骑冗、改進(jìn)版demo
當(dāng)然赊瞬,上面有點(diǎn)粗糙,而且不支持豎排文字贼涩,這是原版設(shè)計(jì)風(fēng)格的一大缺失巧涧,所以本人在改進(jìn)版中支持用戶選擇豎排瀏覽方式
,而且作為一款新產(chǎn)品遥倦,獲取用戶的反饋是極為重要的
谤绳,故也添加反饋入口(由于沒搭后臺,只能先讓用戶以郵件形式反饋??)袒哥。
下面是改進(jìn)版的demo截屏缩筛。
五、下載及版權(quán)
-
36Kr NEXT推薦堡称。
稀土掘金 推薦
[稀土掘金日報(bào)] andriod開發(fā)新資源新干貨 - apk 下載網(wǎng)址:JianShi lastest version in Fir.im
- 源代碼:簡詩——GitHub瞎抛,歡迎各位fork并和我一起豐富
簡詩
。 - Follow me. 歡迎在Github上follow我哦却紧,??
- 若有幸簡詩得到各位喜愛桐臊,希望能把郵箱發(fā)給本人(私信)胎撤,之后若有更新會通知你的??
- 設(shè)計(jì)草稿創(chuàng)意使用已獲得作者Kevin同意
- 本產(chǎn)品用作分享與學(xué)習(xí),若轉(zhuǎn)載須征得本人同意断凶,勿作任何商業(yè)用途
六伤提、服務(wù)端
本人從2016/09月開始進(jìn)行服務(wù)端的開發(fā),最新的代碼請關(guān)注 https://github.com/wingjay/jianshi认烁。
目前已經(jīng)完成了v2.0的服務(wù)端開發(fā)飘弧。
如果讀者有任何意見,可以與本人聯(lián)系:yinjiesh@126.com
砚著。
感謝次伶!
七、必備工具推薦
- 產(chǎn)品原型制作
- 顏色搭配及icon制作
- 移動應(yīng)用分發(fā)
謝謝!
wingjay
GitHub: https://github.com/wingjay
微博: http://weibo.com/u/1625892654