2017Google Study Jams系列之實(shí)踐2A&2B-終于可以安心賣咖啡了

@極簡主義患者/社交控/偽技術(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()方法
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í)踐的'賣咖啡'

Just Java

虛擬機(jī):Nexus 4 API 24, 768 x 1280:xhdpi, Android 7.0, x86_64

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,142評論 25 708
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 6,510評論 0 17
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,760評論 18 399
  • @極簡主義患者/社交控/偽技術(shù)宅/沉迷幻想不能自拔的文藝少年不定期更新的文字平臺:微博 簡書 1.方法 定義方法(...
    婁叔啊喂閱讀 321評論 0 0
  • 他站在樓梯的陰影處和那個(gè)灰臉人默默對視著,下面?zhèn)鱽砼⒖奁穆曇簟;夷樔藛柲懿荒艿剿块g沖個(gè)澡,他答應(yīng)了,然后靜待...
    Linc_Lam閱讀 1,168評論 0 1