Android Activity綜述
用戶看得見摸的著的是手機(jī)屏幕。我們要在手機(jī)屏幕上顯示文字圖像等信息,并對用戶的點(diǎn)擊滑動(dòng)等等操作作出不同的反應(yīng)。
App中與用戶交互的大任由Activity來承擔(dān)。當(dāng)用戶手指點(diǎn)擊手機(jī)屏幕時(shí),Android系統(tǒng)檢測到屏幕發(fā)生的事情,將這一事件分發(fā)對應(yīng)的App處理。
這里要注意,activity接收到的是系統(tǒng)給的信息。系統(tǒng)會(huì)判斷這些交互消息該給哪個(gè)app來處理。
或者換個(gè)說法
Activity 是一個(gè)應(yīng)用組件,用戶可與其提供的屏幕進(jìn)行交互,以執(zhí)行撥打電話、拍攝照片、發(fā)送電子郵件或查看地圖等操作。
每個(gè) Activity 都會(huì)獲得一個(gè)用于繪制其用戶界面的窗口。窗口通常會(huì)充滿屏幕,但也可小于屏幕并浮動(dòng)在其他窗口之上。
Activity怎么用
我們新建的工程中帶有一個(gè)基礎(chǔ)activity。把它改改就能用。
新建工程中,需要注意3個(gè)文件。
MainActivity.java 在src/main/java里,對應(yīng)的包名目錄下。
activity_main.xml 在res/layout里。
AndroidManifest.xml 在src/main里。這里叫做“清單文件”。下文會(huì)介紹。
這3個(gè)文件分布在不同的地方。簡單來說,java文件可以控制界面邏輯。
layout文件(這里指的是activity_main.xml)預(yù)設(shè)了UI如何擺放。
清單文件告訴系統(tǒng),我這個(gè)app有哪些組件,申請了什么權(quán)限。
layout - 界面布局
新建的layout中,as一般會(huì)默認(rèn)給一個(gè)ConstraintLayout。比如activity_main.xml。
這里為了用起來方便,我們把它換成LinearLayout。
有的朋友會(huì)問,都2021年了,為什么不直接用ConstraintLayout?
現(xiàn)在不做什么功能,先用LinearLayout,就是為了方便。
換成LinearLayout后,layout文件長這樣。
可以看到,標(biāo)簽的開頭和結(jié)尾都換成了LinearLayout。其他地方暫時(shí)不修改。
as功能強(qiáng)大,非常便利。我們可以用鼠標(biāo)選中標(biāo)簽開始的androidx...Layout,然后直接鍵盤輸入LinearLayout的前幾位字母。
as會(huì)自動(dòng)彈出選擇框,在里面雙擊選擇LinearLayout或者回車選擇,標(biāo)簽就替換完成了。
Java - 控制界面
layout文件設(shè)計(jì)的是界面的初始布局。它決定了初始界面上放著什么UI組件以及組件是怎么組織安排的。
這里我們說的是「初始界面」或者「初始布局」。也就是說,我們可以控制界面上的UI元素。
先看默認(rèn)的MainActivity.java。在onCreate方法里,R.layout.activity_main指的就是activity_main.xml。
現(xiàn)在layout中有一個(gè)TextView,它可以用來顯示文字。我們想在MainActivity中控制它,該怎么做呢?
現(xiàn)在改一下這個(gè)TextView。刪掉原來ConstraintLayout用到的那些屬性。
給它添加一個(gè)id。這個(gè)id在這個(gè)layout文件中必須是獨(dú)一無二的。給它分配一個(gè)id叫做tv1,就像下面。
現(xiàn)在TextView有了「身份證」,我們在activity中就可以找到它。用的是findViewById方法。
TextView tv1 = findViewById(R.id.tv1);
現(xiàn)在我們就拿到了界面上的這個(gè)TextView對象??梢詫λM(jìn)行操作了。
比如改變它顯示的文字。
TextView tv1 = findViewById(R.id.tv1); // 拿到textView的對象 tv1.setText("Today is a good day."); // 改變文字
AndroidManifest.xml - 清單文件
也可以簡稱為「manifest文件」。清單文件非常重要,它告訴系統(tǒng)我們的app有哪些activity,用到了什么權(quán)限等等信息。
如果要新建activity,需要在清單中注冊。
從這個(gè)默認(rèn)的清單文件中我們可以得知,activity是屬于application的。application就是我們的應(yīng)用。
application標(biāo)簽中也指定了各種元素,例如應(yīng)用的圖標(biāo),名字,主題等等。
MainActivity是應(yīng)用啟動(dòng)的第一個(gè)activity??梢杂^察到它設(shè)置了action和category屬性。
android.intent.action.MAIN決定應(yīng)用程序最先啟動(dòng)的Activity。
android.intent.category.LAUNCHER 表示可以在手機(jī)“桌面”上看到應(yīng)用圖標(biāo)。
設(shè)置了這2個(gè)標(biāo)簽,決定了這個(gè)activity是用戶點(diǎn)擊應(yīng)用圖標(biāo)時(shí)「第一個(gè)啟動(dòng)的界面」。
activity總覽小結(jié)
至此,我們知道了一個(gè)activity通常需要一個(gè)java文件,一個(gè)layout文件,并且要在清單中注冊。
與網(wǎng)頁開發(fā)類比的話,layout文件就像html,Java和js有類似的作用。style(樣式)可以起到css的作用。
activity是應(yīng)用重要的組件之一。紛繁復(fù)雜的內(nèi)容需要activity來承載。
之后我們會(huì)在activity中控制各種各樣的UI組件,處理用戶的操作,申請權(quán)限等等。還要了解activity的生命周期,啟動(dòng)方式和跳轉(zhuǎn)方法。
代碼請參考 Tutorial2020
Android Java
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。