日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

分享我學習 Androd 開發(fā)過程中寫的小項目

 codingSmart 2021-10-22

前言

在公司 iOS APP上線后,Android 項目也要提上日程,因為只招一個安卓開發(fā),同時還希望安卓APP也盡快上線,所以我又學起了 Android開發(fā)。以協(xié)助安卓工程師開發(fā)。從五月初到現(xiàn)在,APP 終于上線。我也學到了很多 Android 開發(fā)的技術,現(xiàn)在我把我學習過程中開發(fā)的小項目分享出來。學習 Android 開發(fā)的小項目,這是 Github 地址,如果你感覺對你學習 Android 有幫助的話,請給個 Star

剛開始時我們都是用 Java 開發(fā) Android,對于寫了好幾年 Swift 的我完全不能忍受 Java 的語法,沒有元組(可以通過第三方實現(xiàn)),沒有高階函數(shù),沒有擴展方法,不像Swift,接口(Interface)所有方法都要實現(xiàn)的,沒有可選實現(xiàn)的。沒有自定義運算符,句末要加分號等很多我在 iOS開發(fā)過程中常用的語言特性都沒有。直到后來 Google 宣布 Kotlin 為Android 開發(fā)的一級語言。我就去隨便了解下 Kotlin 的語法,發(fā)現(xiàn)Kotlin 和 Swift 的語法實在是太像啦。兩者相似度應該有 80% 以上吧,請參考 Swift 和 Kotlin 語法比較。所以那還等什么?和同事協(xié)商后,確認可以在同一個項目里面可以同時使用 Kotlin 和 Java 開發(fā),那么我果斷換成 Kotlin 開發(fā),Kotlin確實比 Java 簡潔多了,不再需要butterknife 框架,不需要寫各種事件類,各種 View 也可直接從 XML 里面直接取出,再加上高階函數(shù)和擴展方法,仿佛又回到了 iOS 開發(fā) APP 的感覺。其開發(fā)體驗和用 Java 開發(fā)完全不可同日而語。所以我在自己學習 Android 開發(fā)寫的小項目也全是用 Kotlin 開發(fā)的。這里我就不再詳細介紹 Kotlin 了,下面直接給出這些小項目吧,

這 6 個小項目從上下到依次是天氣,小說,美圖,五筆查詢,花瓣和2048 AI版。


下面一個一個說起

6 個小項目

Weather

Weather 是學習 Android 最經(jīng)典的 Android 學習入門書《第一行代碼》的最終實戰(zhàn),這個例子覆蓋的知識點非常全面,有網(wǎng)絡請求,Json 轉(zhuǎn)換成 Model,抽屜布局,DataSupport 數(shù)據(jù)庫的使用還有 Service 服務,作為入門的實戰(zhàn) APP 實在是再適合不過了。書上是用 Java 寫的,我在這里全部使用了 Kotlin 來實現(xiàn)。代碼更加精簡些。

Novel 小說閱讀

我有很多同事都是小說狂人,但是貌似很多小說 APP 都有廣告(我不看小說不清楚),于是讓幫忙寫個小說 APP,他用都用 iPhone,于是我寫了個 iOS 版本的小說閱讀 APP iOS小說閱讀器,然后我再想試試寫一個Android 版本的,于是就有了這個小項目,

BaseQuickAdapter 真的很強大,解決了很多 RecyclerView的實際需求,比較下拉刷新和加載更多等。書簽用 DataSupport保存,這個小項目沒有使用到接口,是解析 HTML實現(xiàn)的。使用了 Jsoup 來解析 HTML,非常好用。另外在開發(fā)過程了還碰到了BGK問題,需要用到字符串 bytes。問題不大??傊麄€項目比較簡單,很容易看懂。

美圖

無意中發(fā)現(xiàn)個網(wǎng)站,里面的圖片質(zhì)量還算不錯,用來當壁紙比較合適。還可以用分辨率篩選。于是下載了他們官方的 APP,但是官方 APP 有廣告,而且好像只能看手機壁紙,不能看電腦的。這兩點讓我非常不爽。于是我就想自己寫一個 APP,無廣告,可以隨意收藏和下載高清壁紙。感覺很不錯

開發(fā)的技術難點并不多,使用和小說閱讀器一樣的技術。圖片顯示用了Fresco,圖片下載用了 Glide

五筆查詢

筆者是一個五筆使用者,雖然用了很久五筆了,但還是有很多字不會打,所以我一般在我手機上安裝了五筆反查這個APP,本來作為簡單的查詢APP,應該十分簡潔的,但是里面的廣告非常讓我不爽,而且非常容易點到。體驗也做得比較次。比如歷史查詢功能就做得很一般。所以我干脆自己寫一個。

這個小項目沒有特別的技術難點,唯一的難點度不在于 APP,而是查詢網(wǎng)站令人蛋疼的編碼,全部采用GBK編碼,而且對請求和請求體有一些特殊要求。請求時需要加上這些參數(shù),查詢的文字需要用 UrlEncode進行GBK編碼,然后再和 key 拼起來。探索這結(jié)東西花了些時間。

花瓣

花瓣 APP 也算了個中型的 APP 了,我是按照 Github 的花瓣 開源項目來寫的,主是要學習里面的架構(gòu)寫法。實現(xiàn)了收集,登錄,喜歡,搜索等功能,原作者說全部采用目前最新的和最熱門技術。所以還是有一定有學習價值的。你可以把我寫的這個看成是Kotlin的實現(xiàn)版本。但是里面關于Fragment 的實現(xiàn)機制不一樣,我用了 BaseQuickAdapter,所以會比較簡單些。

技術方面用了 [RxJava/RxAndroid] 實現(xiàn)異步響應,簡化了很多異步回調(diào)的代碼。網(wǎng)絡方面使用了 Retrofit,搭配 RxJava很實用,處理數(shù)據(jù)轉(zhuǎn)化成 Model一步到位。其他有興趣的可以參考代碼自己實現(xiàn)一次,就能明白里面的架構(gòu)和技術了。

2048 AI版

2048 是一款具有魔力的游戲,很容易上癮。一玩就停不下來。但是我水平很菜,從來沒有合出來 2048。既然我合不出來,就讓 AI 來幫忙吧。于是我參考了 2048 的 AI 實現(xiàn)資料,目前網(wǎng)絡上最主流的是算法是MixMax 算法,請參考文章 2048 AI 程序算法分析,里面詳細地分析了這個算法,并且給出了js的實現(xiàn)。于是我也想在APP上實現(xiàn)這個算法,首先我要找到 2048 在安卓上在實現(xiàn)。我找到了這個 Android版2048游戲視頻教程源碼,這個APP寫得非常好,還有作弊和撤銷功能。我就用這個APP的源碼,并把它用 Kotlin 重新實現(xiàn)了一遍。然后再添加AI功能。AI的源代碼我參考了 2048 AI 的實現(xiàn)。發(fā)現(xiàn)里面的 2048 實現(xiàn)機制和安卓機制很像,在這個基礎上加上AI代碼應該不難。事實上確實如此,很快我就把AI代碼移植過去并成功運行。經(jīng)過簡單的調(diào)試后再測試了很多次,合出2048豪無壓力,只是.....我不明白為何一但AI合出2048后突然就智障了,后面的每一步都像自殺一樣,豪無章法。很快就掛了。目前工作還比較忙,有時間我再看看為何會這樣。

技術方面最主要就是2048的AI算法以及在Android上使用Kotlin的實現(xiàn)2048。這又是比較大的一塊,我將專門寫一篇文章來說明這個AI算法和實現(xiàn)代碼。

到目前為止,我已經(jīng)開發(fā)過iOS項目,Android項目,小型 Windows App項目 參考 Windows APP時鐘 和 Web 項目(參考上一篇文章的Vue和Node實現(xiàn)的完整Blog項目),微信公眾號和小程序也有了解過,后端的話用過ASP.Net和Node.js。對目前最主流和開發(fā)平臺的開發(fā)技術都有一定的了解。如果讀者想進入這個行業(yè)但又不知道選擇哪個平臺來入門,又或者讀者已經(jīng)熟悉了一個平臺,想再選擇學習另一個平臺的技術,但是不知道選哪個好,那么可以聯(lián)系我。我會幫助讀者結(jié)合自己的興趣和已有知識再加上目前各平臺的行情選擇一個合適的平臺技術學下去。

最后再給出地址學習Android開發(fā)的小項目,麻煩Star啦.

https://github.com/DuckDeck/AndroidDemo

與之相關

帝都三年 Java,說說我的求職之路

給編程生涯充電的 10 本書

微信號:code-xiaosheng

公眾號

「code小生」

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多