Android學習筆記4:探究活動1

《第一行代碼——Android》郭霖著php

更多內容,歡迎訪問個人我的博客醒島java

活動(Activity)是什麼

一個Activity是一個應用程序組件,提供一個用戶界面,用戶能夠用來交互以完成某項任務,例如閱讀文本、點擊按鈕、看照片等。每個Activity被給予一個窗口,在上面能夠繪製用戶接口。窗口一般充滿屏幕,但也能夠小於屏幕而浮於其它窗口之上。一個應用程序中能夠包含零個或多個活動,但不包含任何活動的應用程序不多見,由於這樣用戶就沒法看到你的應用程序了。android

手動建立一個活動

咱們如今來看看如何手動建立一個活動。在HelloWorld項目中,MainActivity這個活動是自動建立的,那如何手動建立活動呢?下面咱們一步一步來進行活動的建立。app

  • 新建一個項目ActivityTest。設置好包名等選項後,點擊下一步。
    creat activitytest.PNGide

  • 選擇相應設備和最小兼容SDK。
    creat activitytest1.PNG佈局

  • 注意!在這一步的時候,咱們要選擇「Add No Activity」選項。這樣就不會自動建立活動了。點擊Finish。
    creat activitytest2.PNGui

  • 如今項目建立好了,咱們來看看Project目錄。
    create activity.PNGspa

在如圖所示的位置(這就是咱們建立項目時默認的包名)右擊,選擇New。在接下來的菜單裏能夠選擇Java Class或者直接選擇Activity來建立新的Activity。這裏我選擇了Java Class。以後,在新的文件裏寫上以下內容:code

public class FirstActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

create activity1.PNG

能夠看到,onCreate()方法很是簡單,就是調用了父類的onCreate()方法。xml

  • 在AndroidManifest文件中註冊。全部的活動都要在AndroidManifest.xml中進行註冊才能生效。咱們打開AndroidManifest.xml,在<application>標籤內添加以下代碼。

<activity
    android:name=".FirstActivity"
    android:label="This is FirstActivity" >//如果主活動,這裏還會成爲應用程序的名稱
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

這些語句的意思在Hello World程序解析中已經講過,在此就再也不贅述。

添加布局文件

上面咱們已經建立了一個活動,但是這個活動是空的,下面咱們來爲這個活動添加布局(Layout)文件。

  • 打開res目錄,你會發現並無layout目錄。這是由於new→Java Class時AS是不會自動生成layout目錄和文件的。(若是你在上一步執行的是new→Activity操做,並勾選了「Generate Layout File」,layout目錄和對應的layout文件就會存在了。)在res上右擊,選擇new→Android resource directory→name:layout,type:layout,set:main→OK。
    create layout3.PNG

  • 右擊layout→new→Layout resource File→name:first_layout,root element:LinearLayout→OK。至此,layout文件就建立好了。
    create layout1.PNG

  • 下面咱們來添加一個Button按鈕。在< LinearLayout >標籤內添加以下代碼:

    <Button
        android:id="@+id/button_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button 1"
    />

這裏咱們添加了一個button元素,android:id是給當前元素添加一個惟一標識符。咱們在helloworld程序解析中有提到xml中能夠引用資源的格式爲@xxx/xxxxx,這裏的@+xxx/xxxxx則是在xml裏定義一個資源id的格式。android:layout_width指定了當前元素的寬度,match_parent表示讓當前元素和父元素同樣寬。ndroid:layout_height指定了當前元素的高度,這裏使用wrap_content,表示當前元素的高度只要能恰好包含裏面的內容。android:text指定了元素中顯示的文字內容。
create layout2.PNG

  • 從新回到FirstActivity,在onCreate()方法中加入以下代碼:

    setContentView(R.layout.first_layout);

setContentView()方法來給當前的活動加載一個佈局,而在setContentView()方法中,咱們通常都會傳入一個佈局文件的id。注意這裏咱們使用的R,是com.example.activitytest包下的R文件,Android SDK還會自動提供一個android包下的R文件。
這時程序運行的效果以下所示:
activitytest result.PNG

隱藏標題欄

書中的方法是在onCreate()方法中添加以下代碼:

requestWindowFeature(Window.FEATURE_NO_TITLE);

並且要添加到setContentView語句前。可是我發現,這時程序運行的效果與前次沒有區別。這是怎麼回事?原來,咱們的活動繼承自Activity,這樣的話是默認不顯示標題欄的。那如何在這種狀態下隱藏狀態欄?在res目錄下打開style.xml文件,在其中新添加一個style:

<style name="FullScreenTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="android:windowFullscreen">true</item>
</style>

而後在AndroidManifest文件中修改

android:theme="@style/FullScreenTheme"

能夠選則在Application元素中使用,也能夠給一個activity元素使用。效果以下:
Screenshot_2016-05-01-20-37-30[1].png

可是當你的活動繼承的不是Activity而是AppCompatActivity時,默認的顯示效果以下:
Screenshot_2016-05-01-20-45-30[1].png

狀態欄和標題欄是都顯示出來的。
咱們把theme改成FullScreenTheme時,狀態欄隱藏了,但是標題欄沒有隱藏。咱們修改剛剛寫的style以下:

<style name="FullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="android:windowFullscreen">true</item>
    </style>

此次標題欄狀態欄就都隱藏了。若是僅僅想要隱藏標題欄,僅僅修改AndroidManifest文件中的android:theme值爲@style/Theme.AppCompat.Light.NoActionBar便可。

相關文章
相關標籤/搜索