小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

分享我學(xué)習(xí) Androd 開(kāi)發(fā)過(guò)程中寫(xiě)的小項(xiàng)目

 codingSmart 2021-10-22

前言

在公司 iOS APP上線后,Android 項(xiàng)目也要提上日程,因?yàn)橹徽幸粋€(gè)安卓開(kāi)發(fā),同時(shí)還希望安卓APP也盡快上線,所以我又學(xué)起了 Android開(kāi)發(fā)。以協(xié)助安卓工程師開(kāi)發(fā)。從五月初到現(xiàn)在,APP 終于上線。我也學(xué)到了很多 Android 開(kāi)發(fā)的技術(shù),現(xiàn)在我把我學(xué)習(xí)過(guò)程中開(kāi)發(fā)的小項(xiàng)目分享出來(lái)。學(xué)習(xí) Android 開(kāi)發(fā)的小項(xiàng)目,這是 Github 地址,如果你感覺(jué)對(duì)你學(xué)習(xí) Android 有幫助的話,請(qǐng)給個(gè) Star

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

這 6 個(gè)小項(xiàng)目從上下到依次是天氣,小說(shuō),美圖,五筆查詢,花瓣和2048 AI版。


下面一個(gè)一個(gè)說(shuō)起

6 個(gè)小項(xiàng)目

Weather

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

Novel 小說(shuō)閱讀

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

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

美圖

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

開(kāi)發(fā)的技術(shù)難點(diǎn)并不多,使用和小說(shuō)閱讀器一樣的技術(shù)。圖片顯示用了Fresco,圖片下載用了 Glide。

五筆查詢

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

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

花瓣

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

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

2048 AI版

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

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

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

最后再給出地址學(xué)習(xí)Android開(kāi)發(fā)的小項(xiàng)目,麻煩Star啦.

https://github.com/DuckDeck/AndroidDemo

與之相關(guān)

帝都三年 Java,說(shuō)說(shuō)我的求職之路

給編程生涯充電的 10 本書(shū)

微信號(hào):code-xiaosheng

公眾號(hào)

「code小生」

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多