筆記鏈接:http://www.cnblogs.com/igoslly/p/6805020.html 筆記以開發名為CoffeeOrder的app活動為線索,介紹app如何從功能設計→佈局設置→代碼編寫→改進,介紹java文件修改和佈局嵌套。 一、應用知識 首先來看一些AndroidStudio的基 ...
筆記鏈接:http://www.cnblogs.com/igoslly/p/6805020.html 筆記以開發名為CoffeeOrder的app活動為線索,介紹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:
偽代碼——解釋應用每一步驟內容的高級描述語言。偽代碼和描述不同,以文字形式、以代碼的思維分解每個行為的具體內容,並可以直接將每一句改寫為代碼。 局部變數&全局變數:在程式文件中,往往會包含多個函數。在每個函數體內定義的變數僅在該函數運行時有效賦值,結束後即釋放;全局變數在子函數體外定義,併在程式運行時持續有效。 二、應用設計思路 設計整個應用,主要需要以下工作: 界面顯示: 顯示Quantity、Price、Order按鈕,添加TextView和Button。 數據計算: 根據實際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 從結構來看,嵌套結構所做的改變如下圖所示: 可以在Studio在Design面板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控制 gravity由View控制 涉及屬性包括: 該控制項的佈局方式。可以取以下值: top -- 控制項置於容器頂部,不改變控制項的大小。 bottom -- 控制項置於容器底部,不改變控制項的大小。 left -- 控制項置於容器左邊,不改變控制項的大小。 right -- 控制項置於容器右邊,不改變控制項的大小。 center_vertical -- 控制項置於容器豎直方向中間,不改變控制項的大小。 fill_vertical -- 如果需要,則往豎直方向延伸該控制項。 center_horizontal -- 控制項置於容器水平方向中間,不改變控制項的大小。 fill_horizontal -- 如果需要,則往水平方向延伸該控制項。 center -- 控制項置於容器中間,不改變控制項的大小。 fill -- 如果需要,則往水平、豎直方向延伸該控制項。 start -- 控制項置於容器的起始處,不改變控制項的大小。 end -- 控制項置於容器的結束處,不改變控制項的大小。
public void greenteaPrice(View view) { price=3; kind="Green tea"; displayPrice(price*num); }
③ 豐富訂單狀態信息 每次提交ORDER時,向用戶反饋飲品種類+飲品數量 飲品種類設置全局變數kind,String類型,同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