首先推薦郭霖的《第一行代碼》第三版(這是Kotlin版,關于Kotlin,當看到這篇文章,那請不要猶豫到底學不學Kotlin,因為作業后你自己會主動學),如果你跟我一樣需要抓基礎,那這是一個不錯的選擇,通過看書,我把自己之前學習Android疑惑的東西都寫了出來,按照學習的順序,
一.Project目錄分析

首先我們在作業時要切換為專案的真實目錄結構(就是將Android下拉為Project)
首先對于疑惑的目錄進行講解
- .gitignore 這個檔案用來將指定的目錄或檔案排除在版本擴展之外,
- build.gradle 主要分為2個,app目錄里的 build.gradle是app模塊的gradle構建腳本,這個檔案會指定很多專案構建相關的配置,另外一個是專案全域的gradle的構建腳本,通常這個檔案不需要修改,
- proguard-rules.pro 這個檔案用于指定專案代碼的混淆規則,當打包成安裝包檔案后,如果不希望被破解,就會將代碼混淆
- gradlew和gradlew.bat 用于執行gradle命令,gradlew是在Linux和Mac系統,后者是在Windows系統中使用
- local.properties 指定Android SDK路徑,如果更改了位置就在這里修改
- settings.gradle 指定專案引入的模塊
二.XMLl續講
若要看其他的XML講解,請看之前的文章XML講解1
首先要理解下面的布局陳述句,就必須先理解清楚一個控制元件的父布局是什么,因為這樣才能達到理想的布局效果

1.visibility 這是設定控制元件是否可見的屬性 有三個可選引數 visible :可見而且占據位置 inviaible:不可見但占據位置 gone :不可見不占據位置
2.layout_alignParentLeft 貼緊父布局的左邊緣 之后就舉一反三
3.layout_above 讓一個控制元件在另一個控制元件下方 類似的還有layout_bolow
4.layout_alignLeft 讓一個控制元件左邊緣和另一個控制元件左邊緣對齊
注意這時就有一個很重要需要理解的點,當你沒有設定當前控制元件與其他控制元件的位置系結關系時,layout-marginLeft就是離父布局左方向的間距,若設定后,layout-marginLeft,這時就是相當于系結關系的另一個控制元件的位置間距,
三.Kotlin語法糖
首先說下Kotlin特點
特點:1)代碼量少且代碼末尾沒有分號;2)空型別安全(編譯期處理了各種null情況,避免執行時例外);3)函式式的,可使用lambda運算式;4)可擴展方法(可擴展任意類的的屬性);5)互操作性強,可以在一個專案中使用kotlin和java兩種語言混合開發;
1.when
類似java的switch
var i:Boolean=false
when(i){
false -> Log.i(“Boolean”,“false”)
is Boolean ->Log.i(“Boolean”,“false”)
else -> Log.i(“Boolean”,“ture”)
}
when{
i==false -> Log.i(“Boolean”,“false”)
}
這是2種用法,而且可以用is來做型別判斷(is相當于java的instanceof)
2.val和val
var 代表可變變數 ,val代表不可變
在代碼中永遠優先使用val宣告變數,當val無法滿足需求時在使用var
3.open
open class Person{
}
class Student(val x:String,val y:Int):Person(){
init {
}
constructor(x:String):this(x,20)
}
首先Kotlin默認類是Final ,是不可以被繼承,必須加open才可被繼承
主建構式
class Student(val x:String,val y:Int):Person()
Student(val x:String,val y:Int),在Student括號里的就是主建構式中的引數
initi{}就是具體的方法實作
關于繼承(java的extends)和實作(java的implements),在Kotlin都用:表示,有同學可能有疑問繼承那為什么Person()后面有(),這里有一個知識點:繼承必須滿足子類的建構式必須呼叫父類的建構式,默認呼叫父類的無參構造,如果父類定義了有參構造,那父類的無參構造就沒有了,這時就要求 class Student(val x:String,val y:Int):Person()的Person()括號里面要輸入引數,這時又有同學疑惑了,那我要重新定義引數嗎,答案是不需要,把前面的引數傳進來就好了,像class Student(val x:String,val y:Int):Person(x,y)這樣就可以了,
次建構式
constructor(x:String):this(x,20),這就是次建構式,這里通過繼承主建構式間接繼承Person類
- .maxBy{} 用于找到相應條件的最大值
- .filter{} 過濾函式,{}里面是過濾的條件
- . map{} 對集合元素進行映射轉化
- .any{} 至少存在一個元素滿足條件
- .all{} 所有都滿足條件回傳Boolen
- 語法糖簡化Thread 和 設定監聽
Thread{ }.start()
按鍵名.setonClickListener{} - ?. 為空不做事,不為空在執行.后面的陳述句
- ?:為慷訓傳:后面的內容,不為空則回傳?前面的內容
- ”${變數名}“ 在Kotlin用這個可用于表示變數,不用java中的+連接符
13.run,with,apply
val result= with(StringBuilder()){
append(1)
}
val result1=StringBuilder().run {
append(1)
}
val result3=result.apply {
append(1)
}
run和with都是回傳最后一行代碼
apply回傳的是物件本身,就是.apply前面的物件
4.總結
在慢慢接觸公司業務的同時,我也發現了一些問題,想要寫出一個業務需求并沒有那么簡單,首先完成基本功能,而且實作功能代碼中如果需要某些框架或類,首先要通過快捷鍵查看已經有的代碼中有沒有類似已實作的類或框架,有的話就復用,防止重復代碼出現,沒有就新建,在公司中要根據公司要求相應的代碼風格和變數命名格式,在剛接觸一個app的代碼時,因為對于大量的未參與撰寫代碼,常不知道從哪里看起,這時可以通過”當前ACTIVITY”和”CHARLES”抓包工具查看當前的ACTIVITY和資料來源,要先解決出現的BUG,在交給測驗人員和互動人員查看,這周的任務是通過RecycleView和Banner實作一個網路資料的界面展示,這里又用到了藍湖工具,最后又開始看郭霖的《第一行代碼》在加深對于基礎的認識,最后用徐干的一句話來激勵自己-根深而枝葉茂,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/357155.html
標籤:其他
上一篇:Android開發基礎學習
