@極簡主義患者/社交控/偽技術(shù)宅/沉迷幻想不能自拔的文藝少年
不定期更新的文字平臺:微博 簡書
2A
1.創(chuàng)建Just Java項(xiàng)目
和上節(jié)的生日賀卡一樣,我們要?jiǎng)?chuàng)建一個(gè)新的項(xiàng)目來實(shí)現(xiàn)本節(jié)的實(shí)踐內(nèi)容,Just Creat a New Project!
2.回顧前情&完成項(xiàng)目的activity_main.xml
- 使用和選擇正確的布局和視圖(這個(gè)項(xiàng)目里我們使用LinearLayout)
- 布局、添加視圖(Button)并為視圖設(shè)置ID,設(shè)置ID是為了方法的使用
android:orientation="vertical"
android:id="@id/quantity_text_view"
- 為視圖添加樣式屬性(大小/顏色/邊距)
- 大小:textSize
- 顏色:
android:textColor="@android:color/black"
- 邊距:layout_margin(外邊距)|| padding(內(nèi)邊距)
3.初見Java
- 修改activity_main.xml添加按鈕的XML屬性
Android:onClick = “submitOrder”
此屬性代表在Click(單擊)這個(gè)按鈕時(shí)會(huì)調(diào)用submitOrder方法,此方法在Java文件中 - 修改MainActivity.java如下:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void submitOrder(View view) {
display(1);
}
private void display(int number) {
TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view);
quantityTextView.setText("" + number);
}
可以發(fā)現(xiàn)submitOrder方法中只有一行代碼,此代碼為執(zhí)行display方法,display方法則在下面寫明:將id為quantity_text_view的TextView的text改為參數(shù)number,而參數(shù)則可以隨意更改為變量/常量/算式
- 添加咖啡價(jià)格
- 向布局添加 2 個(gè)文本視圖,并為顯示價(jià)格的視圖指定視圖id
@+id/price_text_view
- 為MainActivity.java添加displayPrice()方法
- 向布局添加 2 個(gè)文本視圖,并為顯示價(jià)格的視圖指定視圖id
private void displayPrice(int number) {
TextView priceTextView = (TextView) findViewById(R.id.price_text_view);
priceTextView.setText(NumberFormat.getCurrencyInstance().format(number));
}
確保開啟Android Studio中的"自動(dòng)導(dǎo)入":
File-Settings-Editor-General-Auto Import
選中以下選項(xiàng):
- Show import popup
- Optimize imports on the fly
- Add unambiguous imports on the fly
- Insert imports on paste → All
- 在 submitOrder()中添加另一行代碼:
displayPrice(1006);
- 使用變量(variable)
定義變量:數(shù)據(jù)類型(int) 變量名稱(numberOfCoffees) = 2;
應(yīng)用變量:將未使用變量的值用變量替換即可
關(guān)于變量這種基本語法規(guī)則要掌握并靈活運(yùn)用 - 添加增加/減小按鈕
- 首先修改XML文件,進(jìn)行布局修改
<Button
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginTop="16dp"
android:text="+"
android:onClick="increment"/>
<TextView
android:id="@+id/quantity_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
android:textSize="16sp"
android:textColor="@android:color/black"
/>
<Button
android:layout_width="48dp"
android:layout_height="48dp"
android:text="-"
android:onClick="decrement"/>
- 其次修改Java文件,進(jìn)行方法修改
public void increment(View view) {
int numberOfCoffees = 3;
display(numberOfCoffees);
displayPrice(numberOfCoffees * 5);
}
public void decrement(View view) {
int numberOfCoffees = 1;
display(numberOfCoffees);
displayPrice(numberOfCoffees * 5);
}
4.眼熟一下Debugger
- 一般錯(cuò)誤的排解
在編程的過程中會(huì)遇到各種各樣的錯(cuò)誤,經(jīng)驗(yàn)豐富的老程序員也不可避免,而如何處理遇到的錯(cuò)誤也是一項(xiàng)特殊技巧.我們遇到錯(cuò)誤的第一時(shí)間可以通過查看Android Studio自身的日志來尋找一般的錯(cuò)誤,如語法、單詞拼寫、方法漏寫等 - 更深入的調(diào)試
使用Debugger我們可以使程序運(yùn)行時(shí)暫停在某一行,從而找出程序運(yùn)行過程中由于代碼產(chǎn)生的邏輯性問題或錯(cuò)誤
設(shè)置斷點(diǎn):在代碼行行首左鍵點(diǎn)擊即可出現(xiàn)一個(gè)"紅點(diǎn)",代表可在此處暫停運(yùn)行
召喚Debugger:使用Debugger按鈕即可調(diào)試應(yīng)用,并通過狀態(tài)面板隨時(shí)查看狀態(tài)信息,用單步調(diào)試(F7)來進(jìn)行下一步
5.對變量的靈活使用
我們不能一味地創(chuàng)建并使用變量,因?yàn)檫@依然會(huì)使代碼變的臃腫,并且程序的結(jié)果并不盡如人意
- 對變量使用運(yùn)算而非賦固定的值
public void submitOrder(View view) {
int quantity = 2;
quantity = quantity + 1;
display(quantity);
displayPrice(quantity * 5);
}
- 設(shè)置全局變量
在某個(gè)方法內(nèi)設(shè)置的變量稱為局部變量,其作用范圍只在這個(gè)方法內(nèi)
在主類(本例中為MainActivity)下創(chuàng)建的變量稱為全局變量,可被所有方法共同作用,如下面代碼所示int quantity = 2;
就是一個(gè)全局變量:
int quantity = 2;
public void submitOrder(View view) {
displayPrice(quantity * 5);
}
public void increment(View view) {
quantity = quantity + 1;
display(quantity);
}
public void decrement(View view) {
quantity = quantity - 1;
display(quantity);
}
2B
6.嵌套視圖組(Nested Viewgroups)
通常在設(shè)計(jì)布局的時(shí)候只用一種試圖組是無法很美觀很自然的展現(xiàn)內(nèi)容的,這時(shí)候就要綜合運(yùn)用多種組合布局,也就是視圖組的嵌套.我們可以將Linearlayout嵌套在Relitavelayout中,也可以反其道行之,組合是多種多樣的.
將1A&B&C中的知識再復(fù)習(xí)一遍,好好熟悉視圖及其屬性的應(yīng)用,就可以很輕松的理解嵌套視圖組.
利用嵌套視圖組來實(shí)現(xiàn)構(gòu)建一個(gè)布局的步驟:
- 閱讀界面|布局設(shè)計(jì)圖,劃分并分析視圖間的層次結(jié)構(gòu)圖
- 根據(jù)層次結(jié)構(gòu)圖寫出相應(yīng)的XML代碼
7.使用字符串(String)
定義變量:數(shù)據(jù)類型(String) 變量名稱(priceMessage) = "Free";
"Free"是變量的值,字符串變量定義時(shí)需要用英文雙引號,并且在字符串內(nèi)如有特殊字符需要使用""進(jìn)行轉(zhuǎn)義,如String message = "She said \"1 dollar\"";
- 組合字符串
使用"+"進(jìn)行字符串的組合,可以是字符串的連接,也可以是字符串和整型的連接,如下:
String a = "This is " + "Number Two";
String b = "This is " + 2;
還可以使用變量來進(jìn)行連接:
String priceMessage = "Total: $" + (quantity * 5);
在進(jìn)行字符串變量更新時(shí)也可以使用連接:
public void submitOrder(View view) {
String priceMessage = "Total: $" + (quantity * 5);
priceMessage = priceMessage + "\nThank You~";
displayMessage(priceMessage);
//displayPrice(quantity * 5);
}
8.最后附上隨視頻實(shí)踐的'賣咖啡'
虛擬機(jī):Nexus 4 API 24, 768 x 1280:xhdpi, Android 7.0, x86_64