2019-12-02-週一
新學習的知識點
深入瞭解了Android 中的消息傳遞方式,Handler,BroadCastReceiver,interface,EventBus,RxBus(RxJava),LiveEventBus(美團)。
項目進度
設計畢設產品原型圖,實現了完美的底部導航欄,以及聊天界面、約會界面、社區界面的原型圖。
項目筆記
繼續深入瞭解了騰訊動漫項目 主界面的加載邏輯,以及自定義Toast的使用,在閱讀ChannalFragment時,想要查看上方輪播圖控件的使用,但是一直沒有找到,後來終於找到了CustomBannerW100CanSlideHasBgView,原來這個輪播圖控件沒有xml文件,完全使用代碼來實現佈局的加載,同時還自定義了BannerCircleIndicator作爲底部指示器。
通過閱讀學習到了如何拋離xml文件,完全以代碼實現佈局。
2019-12-03-週二
新學習的知識點
學習和了解了一些畢設中可能會用到的框架的基本使用。
進一步熟悉了Git及sourceTree的使用。
項目進度
整理了畢設中準備用到的框架。
項目筆記
開始着手將項目遷移到AndroidX,創建分支toX,解決了很多項目遷移到AndroidX後產生的問題,在創建分支時也遇到並解決了很多Git相關的問題。
2019-12-04-週三
新學習的知識點
學習瞭如何將項目遷移到AndroidX,以及解決並記錄下遷移過程中出現的問題。
項目進度
無。
項目筆記
整理項目遷移AndroidX中遇到的問題:
前提條件:
1、項目依賴版本需要28以上 compileSdkVersion 28
2、AndroidStudio版本3.2以上
3、gradle版本最低爲3.2.0
在gradle.properties中添加以下兩行:
#AndroidX
android.useAndroidX=true
#第三方庫遷移到AndroidX
android.enableJetifier=true
第一行表示項目使用AndroidX,第二行表示允許將項目中依賴的第三方庫遷移到AndroidX
然後點擊AndroidStudio菜單欄的Refactor->migrate to AndroidX,IDE會自動幫我們將gradle和項目中的依賴庫轉換成AndroidX版本,不過也不用擔心有的第三方庫不支持AndroidX,就算不支持,AndroidX也是兼容非AndroidX的版本的。
遷移過程中發現IDE警告說AndroidStudio is running on a low memory….,才發現忘了提升IDE的內存,畢竟是16G內存的電腦,不如給AndroidStudio多分配點內存,這樣速度更快,
第一種方式可以去修改默認的值在/Applications/Android Studio.app/Contents/bin/studio.vmoptions這個文件的內容,修改方式如下
調整一下這些值:
-Xms256m
-Xmx1280m
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=240m
-XX:+UseCompressedOops
Xms是Java堆內存,Xmx是IDE分配內存,可以將這兩個值調大,以增加AndroidStudio運行速度,不過從網上看到說不推薦這種方式,就像這裏的註釋說的那樣,不建議直接修改安裝目錄下的配置,更建議修改用戶特定的配置文件,這點熟悉mac、linux的用戶都懂,就像/etc下面的和home目錄下的配置一樣,所以建議用接下來的方式去修改這些值,否則直接修改這裏的文件,以後每當你升級AS的時候都會有個alert框提示你:這個目錄下有衝突了,還是有點煩的。
更好的方式是修改~/Library/Preferences/AndroidStudioX.X/目錄下的studio.vmoptions文件
修改完畢後Invalidate and Restart就可以了。
回到AndroidX,遷移完還會有很多問題,大多是Kotlin的問題,絕大部分通過option+enter就可以解決了,還有一些編譯的問題和option+enter不能解決的,在此記錄一下:
問題1:Smart cast to 'String' is impossible, because ‘x.xxxx' is a mutable property that could have been changed by this time
解決方式:https://majing.io/posts/10000004331194
問題2:[TAG] Failed to resolve variable '${junit.version}’
這個直接clean和Invalidate and Restart就可以了。
問題3:appBarLayout. Overload resolution ambiguity.All those functions match.
這個問題的原因是項目中使用的是簡寫的形式,
appbar.addOnOffsetChangedListener { appBarLayout, verticalOffset ->….}
不知道爲什麼升級到AndroidX後,AppBarLayout不能確定簡寫所代表的類,只能取消簡寫的形式,
appbar.addOnOffsetChangedListener(
AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset ->…})
問題解決。
問題4:帶有_viewbinding後綴的編譯文件每次都會報錯,錯誤信息爲依賴庫錯誤,檢查後發現是ButterKnife版本過低,不支持AndroidX導致的,將ButterKnife升級到最新版本問題解決。
因版本不兼容手動升級的第三方庫:
(2.0.1)…...
2019-12-05-週四
新學習的知識點
晚上簡單的學習了一下如何修改AndroidStudio的樣式,在plugins中搜索SexyEditor,下載並安裝後,可以自定義編譯器的背景圖片,挑選了一張鉛筆手繪動漫圖片,簡單摳圖後應用成背景圖片,簡直完美。
今天接觸到一個網站:https://learngitbranching.js.org/?NODEMO
一個非常神奇的網站,通過遊戲過關的方式來學習Git,通過這個網站系統且詳細的學習了一遍Git,收穫很大,非常推薦這個網站。
學習並實踐瞭如何製作.9.png格式的圖片,可以讓圖片自適應拉伸等情況。
項目進度
無。
項目筆記
今天需求設計稿出來了,開始實現需求,雖然都是一些簡單的需求,但過程中仍遇到一些問題,在設置背景圖片時,由於圖片要適配狀態欄,導致圖片被拉伸,視覺效果不好,項目之前就存在這個問題,但是因爲以前的圖片被輕微拉伸後看不出區別,爲了解決拉伸的問題,我將圖片製作成了.9.png格式的圖片,在做了一些適配後,完美實現了設計圖的效果,在控件中還用到了CoolapsingToolbarLayout,在收起後標題顏色是白色,無論怎麼修改Toolbar的空間屬性和style都無法改變字體顏色,後來才發現字體顏色在代碼動態更改的,且Toolbar的標題顏色,屬性屬於CoolapsingToolbarLayout而不是內含的Toolbar,將動態顏色修改爲黑色後完成需求。
2019-12-06-週五
新學習的知識點
學習瞭解了Baas框架,並調研了國內外相關的框架情況。
項目進度
通過調查研究,確定了項目所需的Baas框架,並在項目中成功搭建了框架。
項目筆記
上午完成需求後,開始調研畢業設計的構建,瞭解了國內和國外的Baas框架,firebase、StackMob、Parse、Kinvey、Amazon EC2、Bmob、LeanCloud等,考慮到易用性和服務的穩定性,從框架誕生時間和口碑上來說,國外的firebase、StackMob、Parse、Kinvey框架是比較好的,但是我最終還是放棄了國外的框架,原因主要是:開發文檔是英文,學習和查找文檔不方便,數據存儲不如國內穩定,而且考慮到以後產品擴展,可能會使用相關的收費功能,國外大都是美元或者Google支付,由於國內支付或者訪問Google都太不方便,所以未來不方便擴展收費功能。
於是從國內的幾個成熟的Baas框架中選擇,競爭力最高的就是LeanCloud和Bmob,
LeanCloud,免費的版本能夠使用的資源較少,可能難以滿足產品上線後的需求,但穩定性相比Bmob來說較高,據官網所說,知乎也是使用的他們的框架開發,Bmob勝在價格便宜,且免費版能夠使用的資源較多,但據網友評價說穩定性問題比較大,但是支持按需擴展需求,且每個月只需要99元,相比於LeanCloud的每個月最低900元競爭力很大,綜合考慮後我選擇Leancloud框架來實現產品的後端需求。
週記
這一週公司的任務都比較輕鬆,有時間來整理一下畢業設計項目的東西,也是第一次瞭解到Baas服務,同時整理了項目中可能會用到的第三方庫,並一直在完善產品原型圖,預計下週就可以正式開始實現項目了。
編輯於 2019-12-07-週六