天天看點

Android入門之界面設計

第一次接觸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 == ???) {

...........

}

    }