dayandroid應(yīng)用開(kāi)發(fā)-快速入門-android基礎(chǔ)筆記06activity_第1頁(yè)
dayandroid應(yīng)用開(kāi)發(fā)-快速入門-android基礎(chǔ)筆記06activity_第2頁(yè)
dayandroid應(yīng)用開(kāi)發(fā)-快速入門-android基礎(chǔ)筆記06activity_第3頁(yè)
dayandroid應(yīng)用開(kāi)發(fā)-快速入門-android基礎(chǔ)筆記06activity_第4頁(yè)
dayandroid應(yīng)用開(kāi)發(fā)-快速入門-android基礎(chǔ)筆記06activity_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余32頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

--Alpha0.01 程序Android-Activity簡(jiǎn)介ActivityAndroidActivity提供一個(gè)屏幕,用戶可以用來(lái)交互為了完成某項(xiàng)任務(wù)。Activity中所有操作都與用戶密切相關(guān),是一個(gè)負(fù)責(zé)與用戶交互的組件,可以通過(guò)setContentView(View)來(lái)顯示指定控件。androidActivity些控件也可以并處理用戶的事件做出響應(yīng)。Activity之間通過(guò)Intent進(jìn)行通信。Activity之間的跳轉(zhuǎn)Activity之間的跳轉(zhuǎn)分為2種 到那個(gè)類,并且可以 ActivityIntentIntentctvty的字節(jié)碼,所以顯一般于自的轉(zhuǎn),跳轉(zhuǎn)程序的ctvty。:為了方便演示,創(chuàng)建一個(gè)新的Android工程《Activity跳轉(zhuǎn)》。然后創(chuàng) Activity"android:text="我是第一個(gè) android:label="@string/app_name"<intent-<actionandroid:name="ent.action.MAIN"<categoryandroid:name="ent.category.LAUNCHER"</intent-<activity修 Activity布局文件( .xml),并將該布局文 并修改名字activity_second.xmlSecondActivity顯式編 Activity類packagepackageimportandroid.app.Activity;importandroid.os.Bundle;importpublicActivityextends{protectedvoidonCreate(BundlesavedInstanceState){ }publicvoidskip2Second(ViewIntentintent=newIntent(this,//啟動(dòng)第二個(gè)Activity}}運(yùn)行上面的工程,點(diǎn)擊按鈕,發(fā)現(xiàn)成功跳轉(zhuǎn)到了第二個(gè)Activity2.2隱式ActivityActivity(action)以及信息(category)。因此,能夠被隱式跳轉(zhuǎn)的Activity,在文件中時(shí)必須指定動(dòng)作和信息執(zhí)行上面的代碼,發(fā)現(xiàn)實(shí)現(xiàn)了Activity執(zhí)行上面的代碼,發(fā)現(xiàn)實(shí)現(xiàn)了Activity: 文件中的為<intent-<actionandroid:name="ent.action.MAIN"<categoryandroid:name="ent.category.LAUNCHER"</intent-Intentintent=new//設(shè)置Action//啟動(dòng)Activity<activity<intent-filter<action<category</intent-案例-Activity隱式跳轉(zhuǎn)若想跳轉(zhuǎn)到這若想跳轉(zhuǎn)到這些應(yīng)用程序中,只需打開(kāi)對(duì)應(yīng)應(yīng)用程序文件,找到其動(dòng)作和信息采用隱式跳轉(zhuǎn)即可實(shí)現(xiàn)3.1打開(kāi)瀏覽器界自己將中,打開(kāi)打開(kāi)intent-filter:intent- 有多個(gè) 選擇一個(gè)適 即可<intent-<actionandroid:name="ent.action.VIEW"<categoryandroid:name="ent.category.DEFAULT"<categoryandroid:name="ent.category.BROWSABLE"<dataandroid:scheme="http"<dataandroid:scheme="https"<dataandroid:scheme="about"<dataandroid:scheme="javascript"</intent-:為了方便演示直接修改本文檔2.1章節(jié)中創(chuàng)建的工程,在 布局文件中添加一個(gè)按鈕,點(diǎn)擊該按鈕打開(kāi)一個(gè)瀏覽器。這里給 類法的代碼publicvoidskip2Browser(ViewIntentintent=new//設(shè)置Action//設(shè)置category //啟動(dòng)Activity}3.23.2Androidintent-filterpublicvoidskip2Mms(ViewIntentintent=new//設(shè)置Action//設(shè)置category intent.putExtra("sms_body",//啟動(dòng)Activity}運(yùn)行上面的代碼,發(fā)現(xiàn)成功打開(kāi) 發(fā)送界面。這里就不給出運(yùn)行效果圖<intent-<actionandroid:name="ent.action.VIEW"<actionandroid:name="ent.action.SENDTO"<categoryandroid:name="ent.category.DEFAULT"<categoryandroid:name="ent.category.BROWSABLE"<dataandroid:scheme="sms"<dataandroid:scheme="smsto"</intent-使用Intent傳遞數(shù)據(jù)Intent,ArrayList<String>,Bundle下面通過(guò)一個(gè)案例來(lái)演示Intent如何傳遞數(shù)據(jù),依然使用2.1章節(jié)中的工程。求求:點(diǎn)Activity界面的按鈕,將數(shù)據(jù)傳遞到SecondActivity,并顯示傳遞的數(shù)修改AndroidManifest.xml文件中SecondActivity的intent-filter參在 布局中添加一個(gè)按鈕,給該按鈕綁定事件,點(diǎn)擊該按鈕實(shí)現(xiàn)跳 界面。該事 方 如下<activity<intent-filteractioncategory的時(shí)候啟動(dòng)該Activity--><data--<data</intent-編寫編寫SecondActivitypublicvoidsendData2Second(Viewview)Intentintent=new//設(shè)置Action對(duì)于ent.category.DEFAULT類型的信息為Android系統(tǒng)intent.putExtra("name"," ArrayList<String>list=newArrayList<String>();for(inti=0;i<10;i++){}intent.putStringArrayListExtra("list", Bundlebundle=newbundle.putString("pwd",//啟動(dòng)Activity}過(guò)過(guò)IntentStringdata=intent.getData().toString();Bundleextras=Stringname=(String)extras.get("name");//從Bundle對(duì)象中獲取key為pwd的數(shù)據(jù)Stringpwd(String)extras.get("pwd");List<String>list=(List<String>)extras.get("list");}運(yùn)行該工程,發(fā)現(xiàn)成功跳轉(zhuǎn)到了SecondActivitypublicclassSecondActivityextends{protectedvoidonCreate(Bundle{super.onCreate(savedInstanceState);Intentintent=getIntent();案例-人品計(jì)算器跳轉(zhuǎn)時(shí)使用startActivityForResult方法開(kāi)啟新頁(yè)在被開(kāi)啟的新的頁(yè)面里 調(diào)用setResult方法設(shè)置回傳的數(shù)據(jù)需求:在inctvtyinctvty文件。activity_main.xml tools:context=".MainActivity">android:onClick="click"/>":上面布局文件采用相對(duì)布局,其中屬性是給界面設(shè)置背景,因此需要添加到r/dabe-hdpi下面。y"屬性是設(shè)置該控件不顯示,顯示的時(shí)候可以編寫MainActivity代碼publicclasspublicclassMainActivityextendsActivityprivateTextViewtv;privateEditTextet;protectedvoidonCreate(Bundle{super.onCreate(savedInstanceState);tv=(TextView)findViewById(R.id.tv);et=(EditText)findViewById(R.id.et);}publicvoidclick(Viewview)Stringdata=if(data==null||"".equals(data.trim())||data.length()10)}byte[]bytes=intresult=for(byteb:{result+=}result=Math.abs(result%Intentintent=newintent.putExtra("rp",startActivityForResult(intent,新建新建CalcActivity類繼承Activity類,并在AndroidManifest.xml}protectedvoidonActivityResult(intreq ode,intresultCode,Intentdata){ ode,resultCode,Bundleextras=Stringresult=(String)}}publicpublicclassCalcActivityextends{protectedvoidonCreate(BundlesavedInstanceState)Intentintent=Bundleextras=intdata=(Integer)Stringresult=Intentintent2=newintent2.putExtra("result",}privateStringgetRPText(int{StringrpText=null;if(rp==0){rpText}elseif(rp>0&&rp<=5)rpText算了,跟你沒(méi)什么人品好談的}elseif(rp>5&&rp<=10)rpText是我不好...不應(yīng)該跟你談人品問(wèn)題的}elseif(rp>10&&rp<=15)rpText殺過(guò)人沒(méi)有?放過(guò)火沒(méi)有?你應(yīng)該無(wú)惡不做吧}elseif(rp>15&&rp<=20)rpText="你貌似應(yīng)該三歲就偷看隔壁大 的吧}elseif(rp>20&&rp<=25)rpText你的人品之低下實(shí)在讓人驚訝啊}elseif(rp>25&&rp<=30)rpText你的人品太差了。你應(yīng)該有干壞事的嗜好吧}elseif(rp>30&&rp<=35)rpText你的人品真差!肯定經(jīng)常做偷雞摸狗的事}elseif(rp>35&&rp<=40)rpText="你擁有如此差的人品請(qǐng)經(jīng)常祈求佛 你吧}elseif(rp>40&&rp<=45)rpText="老實(shí)交待..那 作

}elseif(rp>45&&rp<=50)rpText你隨地大小便之類的事沒(méi)少干吧}elseif(rp>50&&rp<=55)rpText="你的人品太差了..稍 就會(huì)去干壞事了吧}elseif(rp>55&&rp<=60)rpText你的人品很差了..要時(shí)刻克制住做壞事的沖動(dòng)哦}elseif(rp>60&&rp<=65)rpText你的人品比較差了..要好好的約束自己啊}elseif(rp>65&&rp<=70)rpText你的人品勉勉強(qiáng)強(qiáng)..要自己好自為之}elseif(rp>70&&rp<=rpText有你這樣的人品算是不錯(cuò)}elseif(rp>75&&rp<={rpText你有較好的人品..持..";}elseif(rp>80&&rp<=85)rpText"你的人品不錯(cuò)..應(yīng)該一表人才吧}elseif(rp>85&&rp<=90)rpText"你的人品真好..}elseif(rp>90&&rp<=95){rpText"你的人品太好了..你就是當(dāng)代活}elseif(rprpText"你的人品不錯(cuò)..應(yīng)該一表人才吧}elseif(rp>85&&rp<=90)rpText"你的人品真好..}elseif(rp>90&&rp<=95){rpText"你的人品太好了..你就是當(dāng)代活}elseif(rp>95&&rp<=rpText"}elseif(rp==100)rpText"}else吧啊rpText"你的人品竟然負(fù)溢出了...我對(duì)你無(wú)語(yǔ)}return}遍運(yùn)行上面的工程,啟動(dòng)后頁(yè)面左側(cè)圖,輸入名字后點(diǎn)擊計(jì)算,結(jié)果如Activity生命周期1、當(dāng)它在屏幕前臺(tái)1、當(dāng)它在屏幕前臺(tái)時(shí),響應(yīng)用戶操作的Activity,它是激活或運(yùn)行狀2Activity3、當(dāng)它完全被另一個(gè)Activity覆蓋時(shí)則處于停止?fàn)顟B(tài) 從一種狀態(tài)轉(zhuǎn)變到另一種狀態(tài)時(shí),會(huì)調(diào)用以下保護(hù)方法來(lái)通知這種變化方法說(shuō)void設(shè)置布局以及進(jìn)行初始化voidvoid調(diào)用voidvoidvoid完全不可void銷Activity生命周期圖1、startActivity開(kāi)啟一個(gè)Activity時(shí),生命周期的過(guò)程是:2、點(diǎn)擊back鍵關(guān)閉一個(gè)Activity時(shí),生命周期的過(guò)程是:onPause(部分可見(jiàn)不可交互)->onStop(完全不可見(jiàn))->onDestroy(銷毀 框形式),新的activity把后面的activity給蓋住onPause(部分可見(jiàn),不可交互)注:指定Activity 4、當(dāng)把新開(kāi)啟的Activity(以 框形式)給關(guān)閉時(shí),后面的activity的生命周期執(zhí)5activity把后面的activityonPause->onStop(完全不可見(jiàn)6activityonRestart->onStart->onResume(可見(jiàn),可交互):實(shí)際工作中常用的方法以及應(yīng)用場(chǎng)景onResumeonPauseonCreateonDestroy把數(shù)據(jù)給掉,節(jié)省內(nèi)存橫豎屏切換Activity4.0以下版本4.0以上版本兼容所有版7.Activity的任務(wù)棧任4.0以下版本4.0以上版本兼容所有版7.Activity的任務(wù)棧任務(wù)棧是用來(lái)提升用戶體驗(yàn)而設(shè)計(jì)(1activity,activityactivityactivity只有在任務(wù)棧棧頂?shù)腶ctivity才可以跟用戶進(jìn)行交互。任務(wù)??梢砸苿?dòng)到 并且保留了每一個(gè)activity的狀態(tài) 并且有序的給用戶列出它任務(wù)棧的缺ActivityActivity每開(kāi)啟一次頁(yè)面都會(huì)在任務(wù)棧中添加一個(gè)Activity還會(huì)造成數(shù)據(jù)冗余,重復(fù)數(shù)據(jù)太多,會(huì):為了解決任務(wù)棧產(chǎn)生的問(wèn)題,AndroidActivity容將介紹Android中Activity的啟動(dòng)模式,這也是最終要的內(nèi)容之一。Activity的啟動(dòng)模式啟動(dòng)模式(launode)在多個(gè)Activity跳轉(zhuǎn)的過(guò)程中扮演著重要的角色,它可以決定是否生成新的Activity實(shí)例,是否重用已存在的Activity實(shí)例,是否和其他Activity實(shí)例公用一個(gè)task里。這里簡(jiǎn)單介紹一下task的概念,task是一個(gè)具有棧結(jié)構(gòu)的對(duì)象,一個(gè)task可以管理多個(gè)Activity,啟動(dòng)一個(gè)應(yīng)用,也就創(chuàng)建一個(gè)與之對(duì)應(yīng)的task。Activity一共有以下四種 1.standard2.singleTop3.singleTask4.singleInstance可可以在AndroidManifest.xml配置<activity 屬性為以上種之一即可下 結(jié)合實(shí)例一一介紹這四種8.1standard模式是默認(rèn)的啟動(dòng)模式,不用為<activity>配置 ode屬即可,當(dāng)然也可以指定值為standardActivity,來(lái)演示一下標(biāo)準(zhǔn)的啟動(dòng)模代碼如下創(chuàng)建一個(gè)Activity,命名public{ActivityextendspublicvoidonCreate(Bundle TextViewtextView=(TextView)findViewById(R.id.tv);Buttonbutton=(Button)findViewById(R.id.bt);button.setOnClickListener(newpublic{ActivityextendspublicvoidonCreate(Bundle TextViewtextView=(TextView)findViewById(R.id.tv);Buttonbutton=(Button)findViewById(R.id.bt);button.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv)Intentintent=newIntent( }}}然 連續(xù)點(diǎn)擊幾次按鈕,將會(huì)出現(xiàn)下面的現(xiàn)象注注意到Activity的實(shí)例,但序列號(hào)不同,并 需要連續(xù)按后退鍵兩次,能回到第一Activity。standard模式的原理如下圖所,每次跳轉(zhuǎn)系統(tǒng)都會(huì)在task中生成一個(gè)Activity實(shí)例,并且放于棧的頂部按下后退鍵時(shí),才能看到原來(lái)的 Activity實(shí)例這就是standard啟動(dòng)模式,不管有沒(méi)有已存在的實(shí)例,都生成新的實(shí)例8.2在上面的基礎(chǔ)上為<activity系統(tǒng)就會(huì)按照singleTop啟動(dòng)模式處理跳轉(zhuǎn)行為。重復(fù)上面幾個(gè)動(dòng)作,將會(huì)出現(xiàn)下面看看到這個(gè)結(jié)果跟standard有所不同,三個(gè)序列號(hào)是相同的,也就是說(shuō)使用的都Activity實(shí)例;如果按一下后退鍵,程序立即退出,說(shuō)明當(dāng)前棧結(jié)構(gòu)中Activity實(shí)例。singleTop模式的原理如下圖所示 Activity,如果是多個(gè)Activity怎么辦,如果不是在棧頂會(huì)如何?接下來(lái)再通過(guò)一個(gè)示再新建一個(gè)Activity命名為SecondActivityIntentIntentintent=newActivity.this,然后將之前Activity跳轉(zhuǎn)代碼改會(huì)跳轉(zhuǎn)到condctvycondctvtypublicclassSecondActivityextends{protectedvoidonCreate(BundleTextViewtextView=(TextView)findViewById(R.id.tv);Buttonbutton=(Button)findViewById(R.id.button);button.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv)Intentintent=newIntent(SecondActivity.this,}}}看看到Activity的序列號(hào)是不同的,證明從SecondActivity跳轉(zhuǎn)Activity時(shí)生成了新Activity實(shí)例。原理圖如下 實(shí)例,但不是位于棧頂,于是重新生成一個(gè)實(shí)例這就是singleTop啟動(dòng)模式,如果發(fā)現(xiàn)有對(duì)應(yīng)的Activity實(shí)例正位于棧頂,則重復(fù)用,不再生成

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論