Android開發筆記(4)——MainActivity.java檔案修改&布局嵌套,androidmainactivity

來源:互聯網
上載者:User

Android開發筆記(4)——MainActivity.java檔案修改&布局嵌套,androidmainactivity
筆記連結:http://www.cnblogs.com/igoslly/p/6805020.html         筆記以開發名為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後,我們期望返回狀態“ Successfully ordered”        同 displayprice方法,我們定義 displayStatus( char status),只是這裡不在是 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”(初始值)        訂購過程中,可同時更新訂單的狀態” Successfully ordered” ” Order failed”  實際操作:        對 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”“ GREEN TEA”       設定新變數 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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.