???????一個(gè)優(yōu)秀的應(yīng)用程序不但需要程序算法的高效和出色的架構(gòu)绷落,更加需要的是一個(gè)完善的界面。今后將開發(fā)完成的應(yīng)用展示給客戶時(shí)糖权,首先使客戶留下深刻印象的恐怕就是美觀華麗的界面了绽淘。所以今天我們學(xué)到了一種可以包含用戶界面的組件,那就是“活動(dòng)”测萎。
???????活動(dòng)主要用于和用戶進(jìn)行交互亡电,代表了一個(gè)用戶所能看到的屏幕,主要是處理一個(gè)應(yīng)用的整體性工作硅瞧。在上節(jié)課的helloWorld活動(dòng)是由ADT自動(dòng)創(chuàng)建的份乒,既然我們要更加深入的理解,那還是要從手動(dòng)創(chuàng)建開始腕唧。
實(shí)驗(yàn)要求
?????? 特定的程序版本號(hào)或辖、應(yīng)用圖標(biāo)、啟動(dòng)界面枣接、按鈕以及實(shí)現(xiàn)界面穿梭
準(zhǔn)備工作
?????? 在我們新建項(xiàng)目時(shí)選擇new → Android Application颂暇,此時(shí)將“Create custom launcher icon”和“Create activity”這兩個(gè)選項(xiàng)取消勾選直接點(diǎn)擊完成。這樣我們就得到了一個(gè)名為firstActivity的項(xiàng)目但惶。
?????? 在Windows選項(xiàng)中找到preferences耳鸯,依次點(diǎn)擊Java → editor → content assist → auto activation triggers for Java,在文本框中輸入26個(gè)字母膀曾。這樣做可以在編程中方便進(jìn)行命令的補(bǔ)全和提示操作片拍。
修改程序版本號(hào)
?????? 在res中找到Android Manifest.xml并雙擊打開,修改versionname中的數(shù)字為你所需要的程序版本編號(hào)
修改程序圖標(biāo)
?????? 在res中找到Android Manifest.xml并雙擊打開妓肢,將圖標(biāo)的圖片名稱修改在Android:icon中
新建包
?????? 在src文件夾下new → package → Name:“com.example.activitytest”該名稱并不是我自己起的捌省,是新建項(xiàng)目時(shí)使用的默認(rèn)包名
新建類
?????? 在com.example.activitytest中點(diǎn)擊右鍵new → class Name:“firstActivity”,并通過superclass → Android.app.Activity 使這個(gè)類繼承自Activity碉钠,最后點(diǎn)擊finish完成創(chuàng)建
重載方法
?????? 項(xiàng)目中的任何活動(dòng)都應(yīng)該重寫Activity的onCreate()方法纲缓,所以我們應(yīng)該在class的空白位置右鍵卷拘,選擇source → override/Implement → onCreate
創(chuàng)建布局
?????? 在Android程序設(shè)計(jì)中邏輯和界面是分離的,每個(gè)活動(dòng)都最好對應(yīng)著一個(gè)界面內(nèi)容祝高。創(chuàng)建布局文件栗弟,在layout右鍵目錄下右鍵→ new → Android XML File → 命名為first,同時(shí)根元素默認(rèn)為第一個(gè)LinearLayout工闺。這里點(diǎn)擊完成后就會(huì)在可視化布局編輯器中看到模擬的Android界面
加載布局
?????? 讓我們重新回到firstActivity.java乍赫,在onCreate()方法中加入這行代碼:setContentView(R.layout.first_layout)? 這里的代碼其實(shí)不用全部敲上,鍵入第一個(gè)字母時(shí)就會(huì)有提示補(bǔ)全語句陆蟆,我們只要選對名稱就可以了
?????? 我們知道項(xiàng)目中添加的任何資源都會(huì)在R.Java中生成一個(gè)相應(yīng)的資源ID雷厂,加載布局就是使我們剛剛創(chuàng)建的first布局的ID添加到R.Java文件中,供以后引用
注冊
?????? 我們創(chuàng)建的所有活動(dòng)要在AndroidManifest.xml中注冊才能生效叠殷,另外這里特別注意尖括號(hào)< />要成對的使用
<activity
?????? anandroid:name=”.firstActivity”>
?????? 這里是通過<activity>進(jìn)行注冊的改鲫,并且使用android:name來指定活動(dòng),引號(hào)中的.firstActivity由于已經(jīng)指定過程序的包名林束,在注冊的這一部分就可以縮寫了
?????? <intent-filter>
????????????? <action android:name="android.intent.action.MAIN"/>
? ? ? ? ? ? ? <category android:name="android.intent.category.LAUNCHER"/>
? ? ? </intent-filter>
</activity>
?????? 這里的兩句聲明是想讓firstActivity在我們點(diǎn)擊應(yīng)用圖標(biāo)時(shí)打開的就是這個(gè)活動(dòng)
添加按鈕
? ? ?? 再回到layout → first.xml
?????? <button
????????????? android:layout_width=”wrap_content” //當(dāng)前元素寬度剛好包含內(nèi)容
????????????? android:layout_height=”wrap_content” //當(dāng)前元素高度剛好包含內(nèi)容
????????????? android:text=”轉(zhuǎn)到下一頁” //指定顯示內(nèi)容
????????????? android:id=”@+id/button_1” //定義一個(gè)id
?????? 在定義id的時(shí)候最好直接選擇提示命令像棘,盡量避免手動(dòng)輸入
界面穿梭
?????? 我們首先需要兩個(gè)界面,在src下與項(xiàng)目同名的包下新建一個(gè)secondActivity壶冒,同樣繼承Activity缕题,并在AndroidManifest.xml中注冊
?????? 接下來一步是對按鈕寫監(jiān)聽事件,并通過顯式intent進(jìn)行跳轉(zhuǎn):
?????? button.setOnClickListener(new View.OnClickListener() {
???????????? @Override
???????????? public void onClick(View arg0) {
??????????????????? Intent intent = new Intent(firstPage.this,secondPage.class);
??????????????????? startActivity(intent);}
});
總結(jié)
?????? 至此為止我們就完成了手動(dòng)創(chuàng)建活動(dòng)以及顯式intent的使用胖腾,其中需要注意大量命令語句正確鍵入烟零,檢查R.Java文件是否注冊成功,在初學(xué)階段多使用命令提示鍵入語句出錯(cuò)率會(huì)大大降低