Android開發筆記(4)——MainActivity.java文件修改&布局嵌套


 
  筆記以開發名為CoffeeOrderapp活動為線索,介紹app如何從功能設計→布局設置→代碼編寫→改進,介紹java文件修改布局嵌套
 
一、應用知識
       首先來看一些AndroidStudio的基本知識,幫助大家有個基本概念。
        在L1和2A課程,我們學習關於XML的代碼修改,基本都在修改MainActivity.xml。我們可以直接在視圖中查看XML代碼的實際視圖。
        WINDOWS打開Emulator——安裝Virtual Device,下載Nexus4 Android平台庫。若系統提醒BIOS未支持VT-X,需要手動在BIOS-configuration-Virtual Technology打開。
        2A課程提到MainActivity.java由Java代碼實現文件定義MainActivity布局的目的、功能,並包含各種方法的實際代碼。

 

        一些概念:
        Android DDMS實際Android手機調試時,可以監控設備的活動。
        logcat輸出日志,記錄並收集設備調試過程中的所有行為。
        Pseudocode
        偽代碼——解釋應用每一步驟內容的高級描述語言。偽代碼和描述不同,以文字形式、以代碼的思維分解每個行為的具體內容,並可以直接將每一句改寫為代碼。
        局部變量&全局變量:在程序文件中,往往會包含多個函數。在每個函數體內定義的變量僅在該函數運行時有效賦值,結束后即釋放;全局變量在子函數體外定義,並在程序運行時持續有效。
 
二、應用設計思路
 
       設計整個應用,主要需要以下工作:
 
        界面顯示:           顯示QuantityPriceOrder按鈕,添加TextViewButton
        數據計算:          根據實際QUANTITY×單價計算實際金額——引入變量設置
        Button鏈接:     按鈕的設置和TextView相同,主要涉及點擊Button后的設置。
        數目增減:           當按下加減按鈕時,能夠實時增減QUANTITY
        顯示更新:          在設置View時我們通常設定初值,當需要改變顯示值時,需要額外定義活動。
 
界面顯示——
 
數據計算——
       當需要修改數目時,可直接打開Java文件進行修改;
        每次打開太過麻煩,且Java不向用戶開放,為直接通過UI動作進行更新,設置Quantity變量,這樣UI的每個操作都可直接修改QUANTITY,自動經過函數進行顯示。
        定義模式:
        (Datatype)(Variable name)=(Initial value
    int num = 0;

 

Button鏈接——
        設置Button點擊活動主要涉及屬性android:onClick=”submitOrder
        表示當每次點擊Button按鈕時,都會在Java文件中尋找submitOrder方法進行運行。
    public void submitOrder(View view) {
        displaystatus(1);
    }

 

數目增減——
        同理【+】【-】按鈕可定義方法“increment”“decrement
        方法體代碼:quantitty=quantity+1;  displayquantity(quantity);
    public void increment(View view) {
        num++;
        display(num);
        displayPrice(num * 5);
        displaystatus(0);
    }
 
顯示更新——
        Quantity_text_view進行修改,需要定義displayquantity()displayprice()
 private void display(int number) {
        TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view);
        quantityTextView.setText("" + number);
    }

private void displayPrice(int number) {
        TextView priceTextView = (TextView) findViewById(R.id.price_text_view);
        priceTextView.setText(NumberFormat.getCurrencyInstance().format(number));
    }

 

狀態更新——
       在課程視頻中,每次點擊ORDER,程序會對實時數目進行計算。
        但實際生活中,點擊ORDER往往直接提交訂單,故需要數目修改實時更新金額,再點擊ORDER后,我們期望返回狀態“Successfullyordered
        同displayprice方法,我們定義displayStatus(charstatus),只是這里不在是int數字,而是String字符串(一串文字)
private void displaystatus(int number) {
        TextView statusTextView = (TextView) findViewById(R.id.status_text_view);
        if (num==0)
            statusTextView.setText("Please enter quantity !");
        else if (number==0)
            statusTextView.setText("Ordering...");
        else
            statusTextView.setText("Successfully ordered !");
    }

 

更多改進:
改進1——嵌套結構
 
        布局優化,當我們需要移動Button按鈕至Quantity_text_view同行后,破壞原有LinearLayout的垂直結構。
        (1)全局從LinearLayout修改為RelativeLayout
                RelativeLayout由於過靈活地布局設置,由於加減按鈕以外的View依舊以垂直結構為主,我們可以采用第二種方法。
        (2)LinearLayout嵌套子LinearLayout
                從結構來看,嵌套結構所做的改變如下圖所示:
                 可以在StudioDesign面板Component樹看到不同View的嵌套層級結構
 
 
改進2——字符串設置
 
        字符串String和整數Int同屬於變量,定義方式同:
                 String(類型) Stringname(自定義名字)= ” dfadfljaldskfj”(初始值)
        訂購過程中,可同時更新訂單的狀態”Successfullyordered” ”Orderfailed
 
實際操作:
        對displaystatus輸入參數進行修改int num String status
displaystatus("Please select beverage !");
        同時字符串還有“連接”獨特性,可以通過加號“+”進行連接,String+int=String
 
 
改進3——條件判斷
 
       在加減數目時,沒有對0進行識別,即會產生數目-1.金額-5情況
        故而在decrement方法中,我們可以增加以下代碼
 if (num == 0)
            num = 0;
        else
            num--;
      表示數目為0時,保持不變;不為0(正整數),數目減1
 
 
改進4——Gravity
       layout_gravity由所屬ViewGroup控制
        gravityView控制
        涉及屬性包括:
                該控件的布局方式。可以取以下值:
                 top                     -- 控件置於容器頂部,不改變控件的大小。
                 bottom                -- 控件置於容器底部,不改變控件的大小。
                 left                     -- 控件置於容器左邊,不改變控件的大小。
                 right                   -- 控件置於容器右邊,不改變控件的大小。
                 center_vertical     -- 控件置於容器豎直方向中間,不改變控件的大小。
                 fill_vertical          -- 如果需要,則往豎直方向延伸該控件。
                 center_horizontal -- 控件置於容器水平方向中間,不改變控件的大小。
                 fill_horizontal      -- 如果需要,則往水平方向延伸該控件。
                 center               -- 控件置於容器中間,不改變控件的大小。
                 fill                    -- 如果需要,則往水平、豎直方向延伸該控件。
                 start                 -- 控件置於容器的起始處,不改變控件的大小。
                 end                  -- 控件置於容器的結束處,不改變控件的大小。



改進5——增加多種飲品種類
改進5是結合改進1~4的應用,包含布局嵌套、新變量設置、字符串顯示等
        布局嵌套
               在第一級ViewGroup嵌套子LinearLayout,添加三種飲品Button
                 ——“MOCHA”“CAPPUCCINO”“GREENTEA
       設置新變量price
                此時不僅飲品數目num,飲品價格也隨種類變化,增加變量price,同為全局變量
                在不同按鍵onClick鏈接方法中,分別對price進行賦值,displayPrice顯示(確保動態金額顯示)
  public void greenteaPrice(View view) {
        price=3;
        kind="Green tea";
        displayPrice(price*num);
    }

 

        豐富訂單狀態信息
             每次提交ORDER時,向用戶反饋飲品種類+飲品數量
              飲品種類設置全局變量kindString類型,同price一起賦值、
              飲品數量num表示,最后displaystatus(“Ordered ”+ kind+ ” cup ”+num);
  public void greenteaPrice(View view) {
        price=3;
        kind="Green tea";
        displayPrice(price*num);
    }

 

所有改進之后得到的CoffeeOrder的效果為

申明:

1、本筆記為文字及圖片均為個人原創,轉載請注明博客園-igoslly

2、Android開發課程於2017年4年參與GoogleDeveloper進行學習,筆記原版http://www.studyjamscn.com/thread-19854-1-1.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM