兩年沉澱,我的開源項目已上線!

轉載請註明出處:https://blog.csdn.net/guolin_blog/article/details/84886691

本文同步發表於我的微信公衆號,掃一掃文章底部的二維碼或在微信搜索 郭霖 即可關注,每個工作日都有文章更新。

今天跟大家談談情懷。

話說我從13年開始寫博客寫到現在,也寫出了一些成績。成爲了博客專家,出版了自己的書,推出了自己的開源框架,還有着自己的微信公衆號。我相信有很多朋友可能都是通過我的書或者是我的博客入門和學習Android開發的,但是我自己卻始終有一個遺憾,我雖然幫助了許多人學會了開發Android App,但是我自己卻幾乎從來沒有開發過一個完整的App,更沒有參與過任何一個知名App的研發。

我從11年開始參加工作,一開始進入的是一家華爲的外包公司,主要做華爲的外包項目。而華爲的項目也是別人外包過來的,而且主要來自於海外市場,我進入的項目組就是做這些海外市場的App的,包括阿聯酋、俄羅斯等國家的電信項目。當時剛參加工作不久,而且項目都早已成形,我只是負責其中一些模塊的維護而已,對整體項目的把控和理解都不夠深入。當時的我根本無法預知,這竟然是我最後一次接觸App項目的開發。

13年我進入了蝸牛遊戲工作,轉眼之間在這裏已經工作快6年了。蝸牛的主要產品都是遊戲,App方向的研發很少。而我在裏面的主要工作就是開發給遊戲使用的SDK,以及解決遊戲在Android平臺上遇到的各種疑難問題,還有就是負責研究與Google相關的各種新技術。

說實話我倒是挺喜歡我的工作內容的,工作強度不大,也不怎麼需要加班,而且有充足的時間可以研究各種新技術,有時候我會把自己調研的技術內容歸納總結成博客,從而形成了一種良性循環,這或許也是我在蝸牛一待就6年之久的原因。

但是我心中的那個情懷是一直存在的,我很喜歡開發App,也想參與開發一款大衆熟知的App,只是我所負責的工作內容無法給我提供這個機會。於是我當時就暗下決心,既然在公司裏沒有機會,那麼我就乾脆自己開發一款App吧。這個念頭是在16年寫《第二行代碼》的時候產生的,並且我將它定爲了繼《第二行代碼》之後下一個我要挑戰的目標。

確實我也是這麼做的,自17年2月份起,我就開始着手這個App的開發了。由於是個人App,我並不指望會有多大的用戶規模,只要有它存在的價值就足夠了。因此我在一開始的時候就決定要將這個App開源,不管最後有沒有用戶,至少對於想學習Android開發的朋友們來說,它一定是有價值的。

當時的設想很美好,17年2月份開始開發,計劃用5個月的時間完成這個App,然後在7月份上線。但是事實證明我的預估實在是太樂觀了,因爲我一個人既要開發客戶端,又要開發服務器,而且只能利用業餘時間開發,還得兼顧着博客和公衆號,導致我實際的開發時間嚴重不足。再加上去年生了場大病,之後我整個人的工作態度都改變了,不再着急趕工期,每天回家之後固定只寫兩小時代碼就休息,這個項目的進度也就像蝸牛一樣慢慢爬到了今天,以至於現在這個項目終於上線了之後,我感到的不是興奮和激動,而是解脫。

不管怎麼說,這個項目終究還是完成了,也是實現了去年我在年終總結時給大家的承諾。讓大家等了這麼久,前面又談了這麼多情懷,現在我們來談談這個項目到底是什麼吧。

其實當初我只想着要做一個App,但至於到底做什麼App,我自己也不清楚。現在已經不是移動行業的黃金年代了,你能想到的想不到的好idea早都被別人給做光了。我當時深思熟慮之後決定做一個好玩的App,儘量讓用戶在上面能找到點樂趣。

那麼什麼樣的App才比較好玩呢?我建過幾個QQ羣,每個都是以聊技術爲主題的,加入的也都是程序員。但是所有羣在一段時間過後都會不約而同地變成扯蛋羣,如果強制限定羣裏只准聊技術的話,那麼這個羣慢慢就會成爲死羣。從這裏我就發現了一個事情,程序員並不是外界想象的那麼木訥,好像每個人天天都只會對着電腦敲代碼一樣。大多數人都還是喜歡吹牛聊天的,也喜歡在羣裏發一些搞笑的圖片。於是我就想以這個爲切入點做一個App,建立一個以歡樂搞笑爲主題的平臺。

聽起來好像是有點類似內涵段子這樣的App(雖然現在內涵段子已經被封殺了),但是像內涵段子這種體量的App我是沒有能力做出來的,因爲除了技術因素之外還要牽扯大量的運營工作,需要有專門的運營人員來篩選和審覈哪些內容是有趣的,哪些內容是無聊的,還要通過強大的推薦系統把有趣的內容推薦給用戶。確實,想要通過代碼來甄別一段文字或一張圖片是否有趣的確太難了,但是我發現了一件事,就是通常GIF圖都是比較有趣的,那麼幹脆我就做一個專門用於分享和瀏覽GIF圖的App好了。這或許並不是什麼完美絕佳的方向,但卻是一個可施行的方向,於是App的主題就這麼定下來了。

我給這個App起名爲趣享GIF,Logo是一隻長頸鹿,之所以選長頸鹿作爲Logo,是因爲長頸鹿的英文叫giraffe,不僅包含了GIF這三個字母,讀音也和GIF類似。

整個App都是以Material Design的主題方式來設計的,爲了UI效果更佳,裏面使用到了大量的動畫功能。

在登錄方面我設計的比較特殊,趣享GIF是沒有賬號密碼登錄功能的,因爲平時每次只要一讓我輸賬號密碼我就頭疼。因此我在做這個App的時候直接把帳號密碼給砍掉了,取而代之的是使用第三方登錄的方式,QQ、微信、微博都可以。

可以看到,登錄的時候也使用到了非常不錯的transition動畫效果。

當然,首次登錄是需要註冊賬號的,註冊的方式也很簡單,暱稱是從第三方賬號那裏獲取的,如果你不想修改的話直接點擊繼續就可以了。註冊完成後會直接跳轉到主界面。

主界面有三個頻道,分別是世界、關注、熱門。世界頻道是使用隨機算法獲取最新的GIF圖列表返回給用戶的,當然其實也不是完全隨機,每個用戶隨着他發佈GIF圖質量的高低會有一個變化的權重值來評價他,權重值越高隨機到的概率也越大。關注頻道就很簡單了,你關注了誰就可以在這裏看到誰發佈的內容。熱門頻道也很好理解,在這裏會使用特定算法計算出最熱門的GIF圖列表返回給用戶,影響是否熱門的因素主要有瀏覽量、點贊數、以及評論數。

由於這是一個新註冊的賬號,目前還沒有關注任何人,點擊關注按鈕就可以去關注一些系統推薦的用戶了。這個推薦算法是根據用戶的活躍度以及發佈內容的質量來動態計算的,如果你足夠活躍且經常發佈一些優質GIF圖的話,你的名字也會出現在這裏。

接下來我們看一下如何發佈GIF圖,在主界面的右下角有一個FloatActionButton,也就是Material Design當中最經典的Fab按鈕,點擊Fab按鈕即可開始編輯發佈。

目前發佈GIF的功能還比較簡單,暫時只支持從相冊選擇GIF圖和從SD卡選擇GIF圖這兩種方式,默認是從相冊中選擇。當然,讀取相冊是一定要申請SD卡訪問權限的,這裏我在請求運行時權限時進行了非常棒的邏輯處理,保證不管用戶是同意還是拒絕都會進行合理的界面提醒。大家在自己實現運行時權限處理的時候也可以參考我這種做法。

同意權限申請之後,界面中顯示出來的圖片都是你手機相冊中現有的GIF圖,默認我並沒有讓它們自動播放,因爲所有GIF圖一起播放會顯得亂糟糟的。如果你想預覽這些GIF圖的播放效果,可以對着圖片進行長按,然後就會播放了。

如果你想切換成從SD卡選擇GIF圖,可以通過點擊右上角的Overflow按鈕進行切換。這裏我們在SD卡中選擇一張GIF圖,會自動返回到剛纔的編輯界面。

只是選好了GIF圖還不能發佈,這裏我們還得補充點文字說明才行,隨便說點什麼都可以,然後點擊右上角的發佈按鈕即可完成發佈。可以看到,在關注頻道當中已經出現我剛剛發佈的這張圖片了。

當然,除了發佈GIF圖之外,我們更常見的可能還是瀏覽別人發佈的GIF圖。這就很簡單了,隨便點擊一張圖片就可以查看,這裏打開GIF圖時我也是使用了非常nice的transition動畫。

在這裏你可以對圖片進行點贊、轉發、以及評論。點贊動畫效果也是相當炫酷的,這些都是用純動畫代碼實現的,而不是使用的圖片。

如果你覺得這張GIF圖很有意思,想將它分享到QQ、微信、微博,或者是保存到手機,很簡單,直接點擊界面上的Fab按鈕即可,這個時候會從底向上彈出一個透明對話框,然後我們就可以進行分享了。

你還可以通過點擊發布人的頭像進入到他的個人主頁,這裏會顯示出他所發佈過的所有GIF圖。你也可以點擊個人主頁界面上的Fab按鈕來關注或者取關這位用戶。

剛纔的個人主頁界面非常漂亮,那麼我們有沒有自己的個人主頁呢?當然有,回到主界面,然後在屏幕的左邊緣向右滑動會拖出側邊欄界面,在這裏點擊個人主頁選項就可以打開你自己的個人主頁了。

默認情況下會自動使用第三方登錄獲取的頭像來作爲你個人主頁的頭像,然後對頭像進行一個模糊處理來作爲個人主頁的封面背景,當然你可以隨意進行定製,點擊界面上的Fab按鈕即可修改。

可修改的用戶資料包括4部分,暱稱、個人簡介、頭像、封面背景。比方說這裏我們修改一下封面背景,修改的方式分爲兩種,拍照和從相冊選擇,我們選擇相冊。這裏我藉助Glide庫對相冊的讀取和加載進行了非常高效的優化,整個相冊列表的加載、顯示、滑動都特別迅速和流暢。

選擇了一張圖片之後會跳轉到裁剪界面,由於各手機操作系統自帶的裁剪功能參差不齊,這裏我使用了Android Image Cropper這個圖片裁剪開源庫,以保證在每一臺手機上裁剪功能都能保持一致性。

最後點擊保存就可以修改用戶資料了,可以看到個人主頁上的封面背景已經成功修改了。

另外由於這是一個GIF專屬App,我還在GIF圖的播放控制上面花了不少心思,比如說可以點擊圖片暫停播放,再次點擊繼續播放。

除此之外還有一些好玩的功能,比如可以對GIF圖的播放速度進行控制,在設置裏面能夠設定播放的倍速,這裏我們選擇2倍速度播放。

而如果選擇1/3速度播放,那麼效果如下所示。

這個App其實在很多細節方面我都花費了大量心思,除此之外,還有諸如搜索、草稿箱等等其他功能,但是限於篇幅的原因就不向大家一一展示,感興趣的朋友可以待會自己下載下來體驗一下。

到目前爲止,趣享GIF已經包含了發佈、瀏覽、關注、點贊、評論、分享、轉發等幾大核心功能,你會發現一個最小型的社交系統已經完成了。這也是我對它的基本定義,一款簡單有趣的社交軟件。當然,其實我原先設想的功能遠不止這些,但是爲了第一個版本能儘快上線,我砍掉了許多有特色的需求,比方說通過攝像頭拍攝生成GIF圖、通過錄制手機屏幕內容生成GIF圖等。這些需求我當然不會放棄,在後面的版本迭代中一定會實現,但是我會隨心而做,並不着急趕版本,所以大家也不用催我。

這裏我非常歡迎大家下載體驗這個我花費了很多精力而編寫的App,也非常歡迎大家多多分享你們認爲有趣搞笑的GIF圖,但是有一條紅線千萬別觸碰,那就是嚴禁發佈任何黃色暴力以及其他違反國家法律的圖片。爲此我還專門開發了一套非常完備的後臺管理系統,所有違規的用戶都會被處罰或者封禁,所以大家千萬別去嘗試這條不正之路。

由於這是第一個版本上線,免不了會有很多的Bug,如果大家在使用過程中遇到了崩潰問題,不用擔心,我在代碼中加入了崩潰採集功能,所有的崩潰信息我都能看到,我會盡量在下個版本中將這些問題修復。如果是遇到了非崩潰類的Bug,那麼可以通過公衆號向我反饋,非常感謝你對這個項目的一份貢獻。

通過大家反饋的Bug,我會盡快對代碼進行重新整理,然後發佈一份比較穩定的開源版本到GitHub上面,希望在一個月之內能完成吧,但是我也不敢保證,大家也不用催我,總之該來的一定會來,我做出的承諾有可能會遲到,但絕不會食言。

目前,趣享GIF已經在應用寶、華爲、360、OPPO、VIVO、百度、豌豆莢、魅族、三星等主流應用商店(小米除外)上線了,大家直接在這些應用商店中搜索“趣享GIF”即可下載安裝。不得不說現在App上架應用商店真是越來越難,還需要申請軟件著作權才行,耽誤了我近兩個月的時間。當然如果你手機上沒有安裝上述商店也沒關係,微信掃描下圖中的二維碼即可直接下載(沒有iOS版本,用iPhone的朋友可以跳過了)。

用我自己的觀點來說的話,一件重要的事情一定要做到有始有終才行。沉澱了兩年時間完成的這個App,對我來說是一件事情的結束,同時也是一個新的開始。接下來我又要嘗試去面對新的挑戰了,而我認爲工作的樂趣就在這裏。


關注我的技術公衆號,每天都有優質技術文章推送。關注我的娛樂公衆號,工作、學習累了的時候放鬆一下自己。

微信掃一掃下方二維碼即可關注:

        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章