Android第一周

環(huán)境:JDK+Andriod JDK

開發(fā)工具:Andriod studio+Genymotion+ADK

Activity:一個頁面

LinerLayout:線性布局 ?

android:id? —— 為控件指定相應的ID

android:text —— 指定控件當中顯示的文字,盡量使用strings.xml文件當中的字符串

android:grivity —— 指定控件基本位置,比如說居中棍郎,居右等

android:textSize —— 字體的大小

android:background —— 背景色

android:width —— 寬(dp)

android:height —— 高度

android:padding* —— 內邊距

android:sigleLine —— 如果設置為true的話屋休,控件的內容在同一行當中進行顯示臂寝,超出內容為省略號

android:layout_weight --用于給一個線性布局中的諸多視圖的重要度賦值与倡。

所有的視圖都有一個layout_weight值滩愁,默認為零虫给,意思是需要顯示

多大的視圖就占據(jù)多大的屏幕空間藤抡。若賦一個高于零的值,則將父視

圖中的可用空間分割抹估,分割大小具體取決于每一個視圖的layout_weight

值以及該值在當前屏幕布局的整體 layout_weight值和在其它視圖屏幕布

局的layout_weight值中所占的比率而定缠黍。

舉個例子:比如說我們在 水平方向上有一個文本標簽和兩個文本編輯元素。

該文本標簽并無指定layout_weight值药蜻,所以它將占據(jù)需要提供的最少空間瓷式。

如果兩個文本編輯元素每一個的layout_weight值都設置為1,則兩者平分

在父視圖布局剩余的寬度(因為我們聲明這兩者的重要度相等)语泽。如果兩個

文本編輯元素其中第一個的layout_weight值設置為1贸典,而第二個的設置為2,

則剩余空間的三分之二分給第一個踱卵,三分之一分給第二個(數(shù)值越小廊驼,重要度越高)。

如果用android:layout_weight="1"惋砂,要想使其真正的平均妒挎,則android:layout_width用"fill_parent"

android:orientation:內容的對其方向, horizontal和vertical西饵。分別表示水平和垂直

RelativeLayout:相對布局

在父親布局的相對位置

android:layout_alignParentLeft="true"http://在布局左邊

android:layout_alignParentRight="true"http://在布局右邊

android:layout_alignParentTop="true"http://在布局上面

android:layout_alignParentBottom="true "http://在布局的下面

在某個控件的相對位置

android:layout_toRightOf="@id/button1"http://在控件button1的右邊酝掩,不僅僅是緊靠著

android:layout_toLeftOf="@id/button1"http://在控件button2的左邊,不僅僅是緊靠著

android:layout_below="@id/button1 "http://在控件button1下面眷柔,不僅僅是正下方

android:layout_above=“@id/button1”//在控件button1下面,不僅僅是正下方

定義和某控件對齊

android:layout_alignTop=”@id/button1”//和控件button1上對齊

android:layout_alignBottom=”@id/button1”//和控件button1下對齊

android:layout_alignLeft=”@id/button1”//和控件button1左對齊

android:layout_alignRight=”@id/button1”//和控件button2右對齊

android:layout_centerHorizontal="true"http://水平居中

android:layout_centerVertical="true"

android:layout_centerInParent="true"

按鈕點擊事件輸入代碼:

findViewByID(R.id.button).setOnclickListener(new view.OncilckListener(){

Toast.makeTest(MainActivity.this,"文字內容”期虾,Toast.LENGTH_LONG).show();

簽名打包方法:

Build ?到 ?Genenrt Signed APK

在res中的AndriodMainifest.xml中可以修改應用的圖標

在test中的build.gardle中修改版本號

在java中新建一個類作為新的Activity原朝,從OnCreat方法開始

public classslashextendsAppCompatActivity {

@Override

public voidonCreate(Bundle savedInstanceState,PersistableBundle persistentState) {

super.onCreate(savedInstanceState,persistentState);

}

}

在AndriodMainifest.xml中設置為啟動頁面

找到按鈕的代碼:

parvate Button mButton;

mButton=(Button)findViewBy(R.Id.button);

設置點擊進入響應事件代碼:

private View.OnclickListener mOnClickListener=new View.OnClickListener(){

switch(v.getId){

case R.Id.button;

Intent intent=new Intent(XXXX.this,XXXX.class);

startActivity(intent);

break;

}

}

啟動頁自動跳轉的代碼:

Handlermhandler=newHandler();

mhandler.postDelayed(newRunnable() {

@Override

public voidrun() {

Intent intent=newIntent(slash.this,MainActivity.class);

startActivity(intent);

}

},1000);

兩個頁面穿上文本的代碼:

TextViewtextView=(TextView)findViewById(R.id.title);

Stringtitle=textView.getText().toString();

intent.putExtra("title",title);

接受:

Intent intent=getIntent();

if(intent!=null){

String title=intent.getStringExtra("title");

setTitle(title);

在傳輸類的時候需要在建立函數(shù)的時候添加序列化代碼:implements Serializable,在接受時要把序列化再強制轉換成類

來回傳輸?shù)拇a: ??

startActivityForResult(intent,1234);

setResult(1234,intent0);

@Override

protected voidonActivityResult(intrequestCode, intresultCode,Intent data) {

super.onActivityResult(requestCode,resultCode,data);

if(requestCode==1234&&resultCode==MainActivity.RESULT_CODE){

if(data!=null){

}

Activity的生命周期


Activity的生命周期

1. 從打開應用到按后退鍵

打開應用

onCreate() 方法執(zhí)行! 不可見

onStart() 方法執(zhí)行! 可見

onResume() 方法執(zhí)行! 可見&在前臺

按下后退鍵

onPause() 方法執(zhí)行! 可見

onStop() 方法執(zhí)行! 不可見

onDestroy() 方法執(zhí)行!不可見

2. 從打開應用到按主屏幕鍵 再到重新打開應用

打開應用

onCreate() 方法執(zhí)行!

onStart() 方法執(zhí)行!

onResume() 方法執(zhí)行!

按下主屏幕鍵

onPause() 方法執(zhí)行!

onStop() 方法執(zhí)行!

重新打開應用

onRestart() 方法執(zhí)行!

onStart() 方法執(zhí)行!

onResume() 方法執(zhí)行!

Activity在onPause() 和 onStop()后都可能由于內存不足等原因被殺死從而當用戶重新打開app時會重新執(zhí)行onCreat()方法镶苞。 onPause()方法在app被其他app覆蓋時會執(zhí)行喳坠,如果短時間內重新回到前面,則會執(zhí)行onResume()方法宾尚。如果長時間不可見的話則會執(zhí)行onStop()方法丙笋。

3. 橫豎屏切換問題

通過橫豎屏切換時發(fā)現(xiàn),Activity的生命周期的變化如下:

onPause() 方法執(zhí)行!

onStop() 方法執(zhí)行!

onDestroy() 方法執(zhí)行!

onCreate() 方法執(zhí)行!

onStart() 方法執(zhí)行!

onResume() 方法執(zhí)行!

是把當前的Activity銷毀后重新創(chuàng)建

在res目錄下新建layout-land文件夾煌贴,里面放的是Activity橫屏時顯示的布局御板,名字要與layout文件夾下的文件名字一樣。

設備旋轉前保存數(shù)據(jù):

重載onSaveInstanceState()方法

onPause() 方法執(zhí)行!

onStop() 方法執(zhí)行!

onSavaInstanceState(Bundle) 方法執(zhí)行

onDestroy() 方法執(zhí)行!

onCreate() 方法執(zhí)行!

onStart() 方法執(zhí)行!

onResume() 方法執(zhí)行!

方法onSavaInstanceState()默認的實現(xiàn)要求所有activity的視圖將自身狀態(tài)數(shù)據(jù)保存在Bundle對象中牛郑。在重新執(zhí)行onCreat()方法時會傳入Bundle對象怠肋。

onCreate() 方法執(zhí)行! /**首次打開app**/

Bundle對象為空

onStart() 方法執(zhí)行!

onResume() 方法執(zhí)行!

onPause() 方法執(zhí)行! /**旋轉手機屏幕**/

onSaveInstanceState() 方法執(zhí)行!

onStop() 方法執(zhí)行!

onDestroy() 方法執(zhí)行!

onCreate() 方法執(zhí)行!

Bundle對象獲取到的myInfo的值:

onStart() 方法執(zhí)行!

onResume() 方法執(zhí)行!

當旋轉手機屏幕并重新執(zhí)行onCreat()方法后在onSaveInstanceState()中向Bundle保存的值傳了過去。

那么有個問題淹朋,onSaveInstanceState()這個方法什么時候會執(zhí)行?一定會在onPause()和onStop()之間執(zhí)行么?

答案:onSaveInstanceState()這個方法不一定都會執(zhí)行笙各,當用戶按下后退鍵時,代表了不再需要這個Activity了础芍,這時候就沒有必要執(zhí)行這個方法了杈抢。但是,如果用戶按下主屏幕鍵或者這個Activity轉為后臺運行時仑性,這個時候需要保存信息惶楼,這個方法會執(zhí)行。

onRestart() 方法執(zhí)行! /**打開app**/

onStart() 方法執(zhí)行!

onResume() 方法執(zhí)行!

onPause() 方法執(zhí)行! /**按下后退鍵**/

onStop() 方法執(zhí)行!

onDestroy() 方法執(zhí)行!

onCreate() 方法執(zhí)行! /**打開app**/

Bundle對象為空

onStart() 方法執(zhí)行!

onResume() 方法執(zhí)行!

onPause() 方法執(zhí)行! /**按下主屏幕鍵**/

onSaveInstanceState() 方法執(zhí)行!

onStop() 方法執(zhí)行!

用戶離開當前activity管理的用戶界面诊杆,或需要回收內存時歼捐,activity也會被銷毀。

不過Android從不會為了回收內存而去銷毀正在運行的activity晨汹。activity只有在暫捅ⅲ或者停止狀態(tài)下才可能被銷毀。此時就會調用onSaveInstanceState()方法淘这。

調用這個方法時剥扣,用戶數(shù)據(jù)會被保存在Bundle對象中。然后操作將Bundle對象放入activity記錄中铝穷。

activity暫存后朦乏,Activity對象不再存在,但操作系統(tǒng)會將activity記錄保存起來氧骤。在需要回復activity時,操作系統(tǒng)可以使用暫存的activity記錄重新激活activity吃引。

常見的做法是覆蓋onSaveInstanceState()方法把數(shù)據(jù)保存在Bundle對象中筹陵,覆蓋onPause()方法處理其他需要處理的事情刽锤。

那么暫存的activity記錄可以保存多久?用戶按下后退鍵后,系統(tǒng)會徹底銷毀當前的activity朦佩。activity記錄也會被清除并思。系統(tǒng)重啟或長時間不適用這個activity時,記錄也會被刪除语稠。

fill_parent被match_parent替代

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末宋彼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子仙畦,更是在濱河造成了極大的恐慌输涕,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慨畸,死亡現(xiàn)場離奇詭異莱坎,居然都是意外死亡,警方通過查閱死者的電腦和手機寸士,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門檐什,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人弱卡,你說我怎么就攤上這事乃正。” “怎么了婶博?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵瓮具,是天一觀的道長。 經常有香客問我凡蜻,道長搭综,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任划栓,我火速辦了婚禮兑巾,結果婚禮上,老公的妹妹穿的比我還像新娘忠荞。我一直安慰自己蒋歌,他們只是感情好,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布委煤。 她就那樣靜靜地躺著堂油,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碧绞。 梳的紋絲不亂的頭發(fā)上府框,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音讥邻,去河邊找鬼迫靖。 笑死院峡,一個胖子當著我的面吹牛,可吹牛的內容都是我干的系宜。 我是一名探鬼主播照激,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盹牧!你這毒婦竟也來了俩垃?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤汰寓,失蹤者是張志新(化名)和其女友劉穎口柳,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體踩寇,經...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡啄清,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了俺孙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辣卒。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖睛榄,靈堂內的尸體忽然破棺而出荣茫,到底是詐尸還是另有隱情,我是刑警寧澤场靴,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布啡莉,位于F島的核電站,受9級特大地震影響旨剥,放射性物質發(fā)生泄漏咧欣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一轨帜、第九天 我趴在偏房一處隱蔽的房頂上張望魄咕。 院中可真熱鬧,春花似錦蚌父、人聲如沸哮兰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喝滞。三九已至,卻和暖如春膏秫,著一層夾襖步出監(jiān)牢的瞬間右遭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留狸演,地道東北人言蛇。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像宵距,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吨拗,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,515評論 25 707
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程满哪,因...
    小菜c閱讀 6,358評論 0 17
  • Day1: 在代碼中通過R.string.hello_world可以獲得該字符串的引用; 在XML中通過@stri...
    冰凝雪國閱讀 1,386評論 0 5
  • 面試題總結 通用 安卓學習途徑, 尋找資料學習的博客網站 AndroidStudio使用, 插件使用 安卓和蘋果的...
    JingBeibei閱讀 1,650評論 2 21
  • 允嫣雙手托著已被打紅的臉劝篷,緩緩地躺在床上哨鸭,眼淚滴在棉被上〗考耍“憑什么......憑什么我就要受這樣的不公平......
    北北Xzavier閱讀 272評論 0 0