Android開發筆記(4)——MainActivity.java檔案修改&布局嵌套,androidmainactivity
筆記連結: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後,我們期望返回狀態“
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 從結構來看,嵌套結構所做的改變如所示: 可以在
Studio在
Design面板
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控制
gravity由
View控制 涉及屬性包括: 該控制項的布局方式。可以取以下值:
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時,向使用者反饋飲品種類+飲品數量 飲品種類設定全域變數
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