新版Android開發(fā)教程+筆記六--應(yīng)用3、4 布局.doc_第1頁
新版Android開發(fā)教程+筆記六--應(yīng)用3、4 布局.doc_第2頁
新版Android開發(fā)教程+筆記六--應(yīng)用3、4 布局.doc_第3頁
新版Android開發(fā)教程+筆記六--應(yīng)用3、4 布局.doc_第4頁
新版Android開發(fā)教程+筆記六--應(yīng)用3、4 布局.doc_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

-Android編程基礎(chǔ)封面Android應(yīng)用開發(fā)3使用Bundle在Activity間傳遞數(shù)據(jù)從源Activity中傳遞數(shù)據(jù)/數(shù)據(jù)寫入IntentIntent openWelcomeActivityIntent=new Intent();Bundle myBundelForName=new Bundle(); myBundelForName.putString(Key_Name,inName.getText().toString();myBundelForName.putString(Key_Age,inAge.getText().toString();openWelcomeActivityIntent.putExtras(myBundelForName);openWelcomeActivityIntent.setClass(AndroidBundel.this, Welcome.class); startActivity(openWelcomeActivityIntent);目標(biāo)Activity中獲取數(shù)據(jù)/從Intent中獲取數(shù)據(jù) Bundle myBundelForGetName=this.getIntent().getExtras(); String name=myBundelForGetName.getString(Key_Name); myTextView_showName.setText(歡迎您進(jìn)入:+name);使用Bundle在Activity間傳遞數(shù)據(jù)2從源請求Activity中通過一個(gè)Intent 把一個(gè)服務(wù)請求傳到目標(biāo)Activity中private Intent toNextIntent;/Intent 成員聲明toNextIntent=new Intent();/Intent定義toNextIntent.setClass(TwoActivityME3.this, SecondActivity3.class);/設(shè)定開啟的下一個(gè)ActivitystartActivityForResult(toNextIntent, REQUEST_ASK);/開啟Intent時(shí)候 ,把請求碼同時(shí)傳遞在源請求Activity中等待Intent返回應(yīng)答結(jié)果,通過重載onActivityResult()方法Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) / TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if(requestCode=REQUEST_ASK)if(resultCode=RESULT_CANCELED)setTitle(Cancel*);else if(resultCode=RESULT_OK)showBundle=data.getExtras();/從返回的Intent中獲得BundleName=showBundle.getString(myName);/從bundle中獲得相應(yīng)數(shù)據(jù)text.setText(the name get from the second layout:n+Name); 第一個(gè)參數(shù)是你開啟請求Intent時(shí)的對(duì)應(yīng)請求碼,可以自己定義。 第二個(gè)參數(shù)是目標(biāo)Activity返回的驗(yàn)證結(jié)果碼 第三個(gè)參數(shù)是目標(biāo)Activity返回的Intent目標(biāo)Activity中發(fā)送請求結(jié)果代碼,連同源Activity請求的數(shù)據(jù)一同綁定到Bundle中通過Intent傳回源請求Activity中backIntent=new Intent();stringBundle=new Bundle();stringBundle.putString(myName, Name);backIntent.putExtras(stringBundle);setResult(RESULT_OK, backIntent);/返回Activity結(jié)果碼finish();Log與DDMS(查看Log等信息)Log.v(TAG, nextPage_Activity onStart();/設(shè)置標(biāo)簽來跟蹤程序Activity生命周期Activity狀態(tài)1 當(dāng)一個(gè)Activity 在屏幕的最上層時(shí)(對(duì)堆棧的最頂端),它就是屬于active或者running的狀態(tài)2 如果一個(gè)Activity失去焦點(diǎn)(focus)但還看得到它的畫面(比如:一個(gè)新的Activity畫面并不是全屏幕或者它是一個(gè)半透明的情況),那失去焦點(diǎn)的Activity則處在paused的狀態(tài)。像這個(gè)失去焦點(diǎn)的Activity它還是完全活著的,并沒有消失。(活著的意思是指,Activity自己本身所有的狀態(tài)及數(shù)據(jù)都還是存在的,也跟窗口管理程序window manager保持聯(lián)系著),像這種paused的Activity,會(huì)在一種情況下消失,那就是當(dāng)系統(tǒng)的內(nèi)存不夠用之時(shí),系統(tǒng)會(huì)自動(dòng)判斷,八部重要的Activity移除。3 如果一個(gè)Activity被其它的Activity完全的遮蓋住時(shí),它仍然保有全部的狀態(tài)及數(shù)據(jù),但因?yàn)樗巡辉俦皇褂谜呖匆姡运漠嬅媸潜浑[藏起來的(畫面不需要更新),當(dāng)系統(tǒng)內(nèi)存不足時(shí),這種stop狀態(tài)的Activity時(shí)最先被系統(tǒng)考慮拿下來釋放內(nèi)存的。4 當(dāng)一個(gè)Activity處于pause或stop的狀態(tài)時(shí),系統(tǒng)可以要求Activity結(jié)束(finish)或直接移除(kill)它。當(dāng)它需要再度呈現(xiàn)在使用者面前時(shí),它必須要能完整的重新啟動(dòng)及回復(fù)先前的狀態(tài)。Activity狀態(tài)轉(zhuǎn)換圖Android應(yīng)用開發(fā)4使用Service什么是服務(wù)(Service)服務(wù)是運(yùn)行在后臺(tái)的一段代碼。它可以運(yùn)行在它自己的進(jìn)程,也可以運(yùn)行在其他應(yīng)用程序的上下文(context)里面,這取決于自身的需要。其他的組件可以綁定到一個(gè)服務(wù)(Service)上面,通過遠(yuǎn)程過程調(diào)用(RPC)來調(diào)用這個(gè)方法。例如:媒體播放器的服務(wù),當(dāng)用戶退出媒體選擇用戶界面,仍然希望音樂可以繼續(xù)播放,這時(shí)就是由服務(wù)(Service)來保證當(dāng)用戶界面關(guān)閉時(shí)音樂繼續(xù)播放的。如何使用服務(wù) 第一種是通過調(diào)用Context.startServece()啟動(dòng),調(diào)用Context.stoptService()結(jié)束,startService()可以傳遞參數(shù)給Service。 第二種方式是通過調(diào)用Context.bindService()啟動(dòng),調(diào)用Context.unbindService()結(jié)束,還可以通過ServiceConnection訪問Service。二者可以混合使用,比如說我可以先startServece()再unbindService()。Service的生命周期 startService()后,即使調(diào)用startService()的進(jìn)程結(jié)束了,Service仍然還存在,知道有進(jìn)程調(diào)用stoptService(),或者Service自己自殺(stopSelf())就沒法了 bindService()后,Service就和調(diào)用bindService()的進(jìn)程同生共死,也就是說當(dāng)調(diào)用bindService()的進(jìn)程死了,那么它bind的Service也要跟著被結(jié)束,當(dāng)然期間也可以調(diào)用unbindService()讓Service結(jié)束 兩種方式混合使用時(shí),比如說你startService()了,我bindService()了,那么只有你stoptService()了而且我也unbindService()了,這個(gè)Service才會(huì)被結(jié)束。進(jìn)程生命周期 Android系統(tǒng)將會(huì)嘗試保留那些啟動(dòng)了的或者時(shí)綁定了的服務(wù)進(jìn)程 如果該服務(wù)正在進(jìn)程的onCreate(),onStart()或者onDestroy()這些方法中執(zhí)行時(shí),那么主進(jìn)程將會(huì)成為一個(gè)前臺(tái)進(jìn)程,以確保此代碼不會(huì)被停止 如果服務(wù)已經(jīng)開始,那么它的主進(jìn)程會(huì)就重要性而言低于所有可見的進(jìn)程但高于不可見的進(jìn)程,由于只有少數(shù)幾個(gè)進(jìn)程是用戶可見的,所以只要不是內(nèi)存特別低,該服務(wù)不會(huì)停止。 如果有多個(gè)客戶端綁定了服務(wù),只要客戶端中的一個(gè)對(duì)于用戶是可見的,即認(rèn)為該服務(wù)可見使用服務(wù)進(jìn)行音樂播放Manifest.xml中的Service定義 Service子類中的Player public void onStart(Intent intent, int startId) super.onStart(intent, startId); player = MediaPlayer.create(this, R.raw.seven_days); player.start(); public void onDestroy() super.onDestroy(); player.stop(); Activity中定義的Intent開啟相應(yīng)的ServicestartService(new Intent(com.liangshan.wuyong.START_AUDIO_SERVICE);stopService(new Intent(com.liangshan.wuyong.START_AUDIO_SERVICE);Android UI布局Activityu Android 應(yīng)用程序基本功能單元u 本身沒有任何屏幕存在View 和Viewgroupu 表示在Android 平臺(tái)上的基本用戶界面單元Viewsu android.view.View 為指定的屏幕矩形區(qū)域存儲(chǔ)布局和內(nèi)容 處理尺寸和布局,繪制,焦點(diǎn)改變,翻屏,按鍵、手勢 widget基類文本 TextView輸入框 EditText輸入法 InputMethod活動(dòng)方法 MovementMethod按鈕 Button單選按鈕 RadioButton復(fù)選框 Checkbox滾動(dòng)視圖ScrollViewViewgroupsu android.view.Viewgroup 包含并管理下級(jí)系列的Views和其他Viewgroup 布局的基類UI樹狀結(jié)構(gòu)u Android中的Activity 定義使用一個(gè)view和iewgroup的樹狀節(jié)點(diǎn)u setContentView()方法 被Activity調(diào)用來把樹狀節(jié)點(diǎn)連接到屏幕渲染LayoutParams (布局參數(shù))u 每一個(gè)viewgroup類使用一個(gè)繼承于ViewGroup.LayoutParams的嵌套類 包含定義了子節(jié)點(diǎn)View的尺寸和位置的屬性類型普通布局對(duì)象FrameLayoutu 最簡單的布局對(duì)象u 在屏幕上故意保留的空白空間,你可以之后填充一個(gè)單獨(dú)的對(duì)象 例如:一個(gè)你要更換的圖片u 所有子元素都釘?shù)狡聊坏淖笊辖莡 不能為子元素指定位置LinearLayoutu 在一個(gè)方向上(垂直或水平)對(duì)齊所有子元素 所有子元素一個(gè)跟一個(gè)地堆放 一個(gè)垂直列表每行將只有一個(gè)子元素(無論它們有多寬) 一個(gè)水平列表只是一列的高度(最高子元素的高度來填充)TableLayoutu 把子元素放入到行與列中u 不顯示行、列或是單元格邊界線u 單元格不能橫跨行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論