Android 開發(fā)札記初級(jí)(五)重要文件解析

之前我們創(chuàng)建了一個(gè) Hello World 項(xiàng)目瞧掺,根據(jù)前幾節(jié)的了解祈争,gradle 和系統(tǒng)已經(jīng)自動(dòng)幫我們生成了項(xiàng)目的文件历恐,現(xiàn)在讓我們來(lái)看看一些主要文件的代碼和作用企锌。

app | src | AndroidManifest.xml

這個(gè)是我們 Android 項(xiàng)目的配置文件衅檀,我們?cè)趹?yīng)用程序中定義的所有四大組件都需要在這個(gè)文件里注冊(cè),另外還可以在這個(gè)文件中給應(yīng)用程序添加權(quán)限聲明霎俩。( 注意:與 eclipse 不同的是哀军,項(xiàng)目中的versionCodeversionName以及對(duì)程序最低兼容和目標(biāo)版本的控制不再是在這里打却,而是在項(xiàng)目的build.gradle里面)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.newam.helloworld">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".HelloWorldActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
  • 每個(gè) XML 文檔都由 XML 序言開始杉适,在前面的代碼中的第一行便是 XML序言,<?xml version="1.0" encoding="utf-8"?>這一行代碼會(huì)告訴解析器和瀏覽器柳击,這個(gè)文件應(yīng)該按照 1.0 版本的 XML 規(guī)則進(jìn)行解析猿推,且文件采用 utf-8 的編碼格式。
  • manifest xmlns:android="http://schemas.android.com/apk/res/android" 定義了我們需要使用的架構(gòu)來(lái)源
  • package="com.example.newam.helloworld" 定義了我們程序所在的 java 包捌肴,應(yīng)用包名是應(yīng)用的唯一標(biāo)識(shí)蹬叭。
  • <application/> 標(biāo)簽里面的屬性如同字面意思,是對(duì)R.java文件里各種資源的引用状知。
  • <intent-filter/> 里面的兩行代碼把 HelloWorldActivity 注冊(cè)為該項(xiàng)目的主要活動(dòng)活動(dòng)秽五。
  • .HelloWorldActivity.的意思是com.example.newam.helloworld的縮寫。因?yàn)樵?code><manifest/>標(biāo)簽里面已經(jīng)通過(guò)package屬性指定了程序的包名饥悴。使用android:label指定活動(dòng)的標(biāo)題欄的內(nèi)容坦喘,標(biāo)題欄顯示在活動(dòng)的最頂部,給主活動(dòng)指定的 label 還會(huì)成為 launcher 中應(yīng)用程序的名稱西设。

main | res | layout | hello_world_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.newam.helloworld.HelloWorldActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <TextView
        android:text="I love QYPing!"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="31dp"
        android:id="@+id/textView2" />
</RelativeLayout>
  • xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    這兩行可以理解為語(yǔ)法判斷器瓣铣,按alt+/ 作為提示,提示該輸入什么不該輸入什么贷揽,以及代碼對(duì)錯(cuò)棠笑,不用聯(lián)網(wǎng)。

  • android:layout_width="match_parent"
    android:layout_height="match_parent"
    這兩行代碼是控制組件的寬度和高度禽绪,有三個(gè)屬性可以選擇:wrap_content表示當(dāng)前元素的高度僅需剛好包含路面的內(nèi)容就行蓖救、fill_parentmatch_parent作用一樣,用于填充父容器水平方向的空間丐一,即拉伸藻糖。

  • tools:context="com.example.newam.helloworld.HelloWorldActivity"不會(huì)被打包進(jìn) APK,它說(shuō)明當(dāng)前的 layout 渲染的上下文是 hello_world_layout.xml里面activity android:name所指定的那個(gè)activity库车,如果這個(gè) activity 在hello_world_layout.xml里面設(shè)置了某個(gè) theme 巨柒,那么 ADT 的Layout Editor 會(huì)在 Design 可視化視圖中即時(shí)渲染對(duì)應(yīng) theme 的背景控件,描述了一種所見即所得的效果柠衍。

  • <TextView/>是安卓系統(tǒng)提供的一個(gè)控件洋满,用于在布局中顯示文字,android:text為這個(gè)控件設(shè)置文本珍坊,因?yàn)?字符串的定義都是使用鍵值對(duì)的形式牺勾,引用了string.xml資源里面的hello_world鍵,它對(duì)應(yīng)了一個(gè)Hello World!的值阵漏,所以最終能顯示出來(lái)我們看到的文字 驻民。


main | java | com | username | helloworld | HelloWorldActivity.java

package com.example.newam.helloworld;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;


public class HelloWorldActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //代碼提示快捷鍵:Ctrl+Alt+空格鍵選中activity_main可以打開到指定的R.java文件中翻具。
        //onCreate方法是一個(gè)活動(dòng)被創(chuàng)建時(shí)必定被執(zhí)行的方法
        super.onCreate(savedInstanceState);
        //這個(gè)方法給當(dāng)前的活動(dòng)引入了一個(gè)叫做hello_world_layout布局
        setContentView(R.layout.hello_world_layout);
        //Log是安卓的工具類(android.util.Log)提供了如下幾個(gè)方法供我們打印日志,如下在logcat中只打印debug信息
        Log.d("HelloWorldActivity","onCreate execute");
    }
}
  • 每個(gè) activity 的注冊(cè)聲明必須得放在 AndroidManifest.xml<application/> 這個(gè)標(biāo)簽里面回还,不然會(huì)報(bào)錯(cuò)裆泳。我們通過(guò)<activity/>這個(gè)標(biāo)簽進(jìn)行注冊(cè),并使用 android:name 這個(gè)屬性來(lái)指定要注冊(cè) activity 的名稱柠硕。
  • 如果要隱藏標(biāo)題欄工禾,對(duì)于Activity,得把requestWindowFeature(Window.FEATURE_NO_TITLE);添加到 onCreate();方法里面蝗柔;而對(duì)于 AppCompatActivity闻葵,使用getSupportActionBar().hide();即可。
  • 調(diào)用一個(gè) setContentViews(); 方法來(lái)給當(dāng)前的活動(dòng)加載一個(gè)布局癣丧,而在該方法中我們一般會(huì)傳入一個(gè) layout 的 id槽畔,剛剛創(chuàng)建的布局的 id 現(xiàn)在已經(jīng)添加到 R 文件中了,這里的 R 文件是 app| build generated | source | r | debug| com下的 R.java 文件坎缭,而 External Libraries| AndroidSDK | res竟痰,也是一個(gè) R 文件,不能混淆了掏呼。

推門看到覆滿天際細(xì)碎的云絮坏快。西邊樹叢后的晚霞像野火余燼被風(fēng)吹過(guò),驟然亮起憎夷;然后光色急遽變幻莽鸿,冷凝,沉落拾给,漫天云紋隨之潛入夜色祥得。這大地之上的璀然告別發(fā)生在短短的十分鐘里,突然一陣惶然失措蒋得,讓人什么都來(lái)不及想级及、來(lái)不及說(shuō)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末额衙,一起剝皮案震驚了整個(gè)濱河市饮焦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窍侧,老刑警劉巖县踢,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異伟件,居然都是意外死亡硼啤,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門斧账,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谴返,“玉大人煞肾,你說(shuō)我怎么就攤上這事∩じぃ” “怎么了扯旷?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)索抓。 經(jīng)常有香客問(wèn)我,道長(zhǎng)毯炮,這世上最難降的妖魔是什么逼肯? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮桃煎,結(jié)果婚禮上篮幢,老公的妹妹穿的比我還像新娘。我一直安慰自己为迈,他們只是感情好三椿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著葫辐,像睡著了一般搜锰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耿战,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天蛋叼,我揣著相機(jī)與錄音,去河邊找鬼剂陡。 笑死狈涮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸭栖。 我是一名探鬼主播歌馍,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼晕鹊!你這毒婦竟也來(lái)了松却?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤捏题,失蹤者是張志新(化名)和其女友劉穎玻褪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體公荧,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡带射,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了循狰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窟社。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡券勺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出灿里,到底是詐尸還是另有隱情关炼,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布匣吊,位于F島的核電站儒拂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏色鸳。R本人自食惡果不足惜社痛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望命雀。 院中可真熱鬧蒜哀,春花似錦、人聲如沸吏砂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)狐血。三九已至淀歇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間氛雪,已是汗流浹背房匆。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留报亩,地道東北人浴鸿。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像弦追,于是被迫代替她去往敵國(guó)和親岳链。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容