第一次接觸android,與之前的嵌入式差别還是很大的,還好JAVA是從C/C++衍生出來的,為我省去了很多時間。在進入android開發學習時,有點不知所措,很主要的一點是,當需要什麼功能時,不清楚在庫裡面是否有相應的已經封裝好的東西,以及對于整體的陌生,實在令我寸步難行啊。故借以此來記錄學習,算是複習,也希望能在他人的學習中,提供自己的一些總結,希望都有所幫助。接下來,就開始我的界面總結吧~
一、關于一些機關:
px:實際螢幕的像素,英文即:pixel
pt:表示一個點,英文即:point
dp:邏輯長度機關,一般1dp = 1px
sp:與dp類似,根據使用者的字型大小設定進行縮放
一般來說,盡量使用dp作為空間大小的機關,而使用sp作為文字大小的機關。
二、關于Activity的跳轉:
在進行活動跳轉時,使用的是Intent這個類,比如有
Intent intent = new Intent();
intent.setClass(本類.this, 要跳轉的類.class);
在最後啟動跳轉startActivity(intent);
這樣既可實作跳轉。
當然,如果是在跳轉中需要傳遞資料的,一般也是都要傳遞資料的,可以使用類Bundle來實作資料的傳輸。該類是“key-value”的形式。
一般的使用方法有: Object get(String key);
void putString(String key, String value);
Bundle bundle = new Bundle();
bundle.putString("key1", value1);
bundle.putDouble("key2", value2);
...
intent.putExtras(bundle); //此處将攜帶資料的bundle放入intent,當在跳轉後的新界面需要使用該資料時,取出即可。
startActivity(intent);
三、跳轉後的Activity:
在新的Activity中,我們将通過Bundle類來擷取之前存入的資料。比如:
Bundle bundle = this.getIntent().getExtras(); //此處即獲得了之前的Activity傳進來的Bundle資料。
String value1 = bundle.getString("key1");
double value2 = bundle.getDouble("key2");
在此我們可以看到,在跳轉前和跳轉後,存入資料和取出資料都是呈對應關系的,這裡應該很好把握吧~
四、當想要實作跳轉後有傳回結果的Activity:
意思就是如果你想在目前頁面跳入新的頁面處理完之後,在傳回本頁面的時候可以帶回資料資訊,則可使用下列方法。
這裡定義兩個頁面:Activity1, Activity2;
第一個頁面Activity1:
當第一個頁面在進入第二個頁面時,與之前的方法略不相同,即使用的是:startActivityForResult(intent, requestCode);
同時,需重寫protected void onActivityResult(int requestCode, int resultCode, Intent data) {},該方法是實作對處理界面的傳回。
第二個頁面Activity2:
可以使用該語句來傳回: 本類.this.setResult(Activity.RESULT_CANCELED, intent); //該語句的兩個參數,第一個參數可以為自己根據需要而定義,也可以用系統已經定義好的常量來使用。第二個參數即為傳入的意圖,可以根據需要在意圖裡添加相應的資料,如上述,使用Bundle來添加傳回的資料。
同時需要在代碼塊最後關掉該頁面: 本類.this.finish();
接下來講解一下關于 startActivityForResult(intent, requestCode);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {};
本類.this.setResult(Activity.RESULT_CANCELED, intent);
1.startActivityForResult(intent, requestCode)的請求碼:
該函數用于第一和頁面,一般用于界面中按鈕的監聽裡,點選即實作活動的跳轉。第一個參數intent自然不用再叙述了,對于第二個參數,是一個請求碼,該請求碼,可用于标記發出該請求的出處,即比如在一個活動中,有多個按鈕同時實作跳轉到相同的一個按鈕,無論是點選哪個按鈕,在跳轉頁面後,當再傳回原頁面時,需要判斷出是由哪個按鈕跳轉而來的,此時的這個請求碼标記就可以作為判斷了,在後面附上簡單示例代碼,供大家參看。
2.onActivityResult(int requestCode, int resultCode, Intent data) {}的請求碼、結果碼:
此處可以實作在多請求碼時,根據需要,進行判斷處理。
接下來的代碼,希望能幫助大家了解請求碼,結果碼的應用。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CALL_REQUEST) {
if (resultCode == Activity.RESULT_CANCELED) {
Bundle bundle = data.getExtras();
String phoneNumber = bundle.getString("PHONE_NUM");
Toast.makeText(this, "撥打的電話是:"+phoneNumber, 1000).show();
}
} else if (requestCode == ???) {
...........
}
}