從0系統學Android-2.1Activity的使用

更多精品文章分類php

第二章:先從看的到的入手—Activity

上一章成功建立了本身的第一個項目。這一章從頁面入手,來進行學習。java

2.1 Activity 是什麼

Activity 是一種能夠包含用戶界面的組件,主要用於和用戶進行交互。一個應用能夠有零個或者多個 Activity。android

2.2 Activity 的基本用法

本身手動建立一個沒有 Activity 的新項目app

2.2.1 手動建立 Activity

項目建立成功後,看到以下目錄編輯器

初始化項目.png

本身手動建立一個 Activityide

右擊 包名com.example.firstcode —>New—>Activity—>Empty Activity工具

這個時候會彈出一個對話框,而後不要選擇 Generate LayoutFileLauncher Activity,而後點擊 Finish佈局

建立Activity.png

若是勾選了 Generate Layout File 後會自動給咱們的 Activity 建立一個 Layout 佈局,勾選了 Launcher Activity 後表示自動將當前 Activity 設置爲主 Activity。這些內容留給咱們後面本身實現。學習

好了如今咱們本身建立了一個 Activity 了,任何 Activity 都要重寫 onCreate 方法。開發工具

public class MainActivity extends AppCompatActivity{
    @Override
    protected void onCreate(Bundle saveInstanceState){
        super.onCreate(savedInstanceState);
    }
}
複製代碼

能夠看到剛剛生成的 Activity 的代碼內容很簡單,在 onCreate方法中就是調用了父類的 onCreate 方法,這是默認的實現方式,後面不少的代碼還須要咱們本身來慢慢填滿!

2.2.2 建立和加載佈局

Android 的程序設計是講究邏輯和視圖分離的,最好要作到每一個 Activity 都對應一個佈局,佈局是專門用來顯示界面內容的。下面咱們就來建立一個佈局。

右擊 app/src/main/res 目錄——>New----->Directory,會彈出一個 新建目錄的窗口,先建立一個 layout 的目錄。而後對 layout 目錄右鍵—>New-->Layout resource fie,這個時候就會彈出新建佈局資源文件的窗口。

first_layout.png

這裏咱們這樣取名fist_layout Root element 選擇 LinearLayout 而後點擊 OK

佈局編輯器.png

看到圖中的佈局編輯器,這是 Android Studio 爲咱們提供的可視化佈局編輯器,在這裏咱們能夠瀏覽咱們佈局的樣子。在窗口下方有兩個切換卡,左邊是 Design 右邊是 TextDesign 是可視化佈局編輯器,這這裏能夠預覽佈局,也能夠經過拖拽編輯佈局。Text 是經過 xml 來編輯佈局。下面切換到 Text 模式。

佈局編輯器_text.png

左邊就是咱們的佈局代碼部分,咱們剛剛建立的時候選擇了 LinearLayout 佈局做爲根佈局,因此這裏就是LinearLayout 。 下面對佈局添加一個按鈕。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">
    <Button android:text="Button" android:id="@+id/bt" android:layout_width="match_parent" android:layout_height="wrap_content" />
</LinearLayout>
複製代碼

簡單介紹一下 Button 裏面的幾個屬性:

  • android:id 是給當前元素定義個惟一標識符,以便以後能夠對這個元素在代碼中進行操做。在 xml 中定義一個 id 的格式是:android:id=@+id/id_name 引用的格式@id/id_name
  • Android:layout_width 指定當前元素的寬度。match_parent表示讓當前元素和父元素同樣寬。
  • android:layout_height 指定當前元素高度。wrap_content 表示高度恰好能夠包裹元素內容。
  • android:text 指定了元素的顯示內容。

關於佈局的編寫詳細內容,會在下一章內容重點講解。

預覽當前佈局.png

預覽一下這個佈局,有可能你的和個人不太同樣,不要緊只要你的按鈕顯示出來就能夠了。不同的緣由是咱們的樣式選擇不同。你能夠看到上面有個 Light 這個是用來選擇樣式的,還有 小眼睛的標誌 也有可能致使咱們的預覽效果看上去不同。(這些東西在初學階段不用去糾結)

佈局已經加載出來了,下面咱們要作的就是讓 Activity 去加載這個佈局。

回到 MainActivityonCreate 方法中添加:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 用於給當前 Activity 加載一個佈局
        setContentView(R.layout.first_layout);
    }
複製代碼

咱們在 onCreate 方法中添加了 setContentView() 方法來加載一個佈局,須要傳入一個佈局的 id。Android 項目中任何的資源(res)包中的東西都會在 R 文件中生成一個對應資源的 id 所以咱們能夠經過 id 就能夠將咱們剛剛建立的佈局加載到 Activity 中 了。

2.2.3 在 AndroidManifest 文件註冊

任何 Activity 都須要在 AndroidManifest.xml 中註冊纔可使用。實際上咱們的 MainActivity 已經在 AndroidManifest 中註冊了。

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

    <application android:allowBackup="false" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" tools:ignore="GoogleAppIndexingWarning">
        <activity android:name="com.example.firstcode.MainActivity"></activity>
    </application>

</manifest>
複製代碼

這是咱們在建立 Activity 的時候,開發工具 Android Studio 自動給咱們註冊的。

註冊方式:在 <application> 標籤內容,經過 <activiy> 標籤來註冊。

介紹一下 <activity> 中的屬性,經過 android:name 來指明是哪個 Activity。僅僅這樣註冊是不行的,由於沒有給程序配置一個主 Activity,這樣程序在運行的時候就不知道首先啓動哪個 Activity。

配置主 Activity 的方式:

activity 標籤內添加<intent-filter> 標籤。如

<intent-filter>
	<action android:name="android.intent.action.MAIN"/>
  <category android:name = "android.intent.category.LAUNCHER"/>
</intent-filter>
複製代碼

這樣就會指定當前 Activity 爲主 Activity。

除此以外,使用 android:label 屬性來指定 Activity 的標題欄中的內容,標題欄是顯示在 Activity 最頂部的(固然能夠去掉)。**注意:**給主 Activity 設置 label 後,啓動器中應用程序顯示的名稱也會是這個。

若是沒有指定主 Activity 的話,程序是沒法運行的。

沒有主Activity.png

好了,通過上面的步驟後,咱們就能夠運行程序了。

首次運行.png

在頁面最上面就是一個標題欄(若是你沒有那是樣式不同,暫時忽略)。標題欄下面就是佈局文件first_layout 編寫的界面。

好了,如今咱們已經掌握瞭如何建立一個 Activity 了下面繼續學習咱們在 Activity 中還能夠作些什麼!

2.2.4 在 Activity 中使用 Toast

Toast 是 Android 系統中一種很是好的提醒方式,能夠將一些短小的信息通知給用戶,這些信息一段時間後會自動消失,而且不會佔用任何屏幕空間。

要想使用 Toast ,首先咱們須要有一個觸發事件。咱們就設置點擊按鈕的時候彈出 Toast 吧。在 onCreate 中添加代碼:

Button bt = findViewById(R.id.bt);
bt.setOnClickListener(new View.OnClickListener(){
  @Override
  public void onClick(View view){
    Toast.makeText(MainActivity.this,"顯示內容",Toast.LENGTH_SHORT).show();
  }
});
複製代碼

在 Activity 中能夠經過 findViewById() 方法來獲取當前佈局中的定義元素。傳出的就是你想要獲取的那個元素的 id。調用 setOnClickListener是給這個元素註冊一個監聽器,用於監聽是否有點擊。點擊觸發時就會調用 onClick 方法。

Toast 的使用方法很簡單,經過調用它的靜態方法makeText 會建立一個 Toast 對象,而後調用 show 方法,展現 Toast。makeText 方法須要傳入三個參數,Context參數:上下文,Activity自己是Context 的子類。第二個參數就是要顯示的內容,第三個參數是顯示的時長,只能選擇Toast.LENGTH_SHORT 或者 Toast.LENGTH_LONG

運行結果:

Toast運行結果.png

2.2.5 在 Activity 中建立 Menu

手機不通與電腦,屏幕空間有限,須要充分的利用好手機空間,若是 Activity 中有大量的菜單,那麼只是菜單就佔據了大部分屏幕,是很是不合理的設計。Android 爲了解決這個問題給咱們提供了菜單

首先在 res 目錄,新建一個 menu 目錄,而後在 menu 目錄內容新建一個 menu resource file ,取名 main。

而後在 main.xml 中添加代碼

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/add_item" android:title="Add"/>
    <item android:id="@+id/remove_item" android:title="Remove"/>
</menu>
複製代碼

這裏建立了兩個菜單項,其中 <item> 標籤就是來建立某一個菜單項的,而後經過屬性 android:id 來給這個菜單項設置惟一標識,經過 title這個屬性給菜單項指定名稱。

而後到 Activity 中重寫 onCreateOptionsMenu() 方法

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main,menu);
        return true;
    }
複製代碼

經過 getMenuInflater() 獲取 MenuInflater 對象,而後調用他的 inflate 方法。第一個參數就是指定咱們建立的 Menu 的資源,第二個參數,用與指定咱們的菜單將會添加到那個 Menu 對象中,這裏直接使用方法中的 menu 而後 return true,表示運行菜單顯示出來,若是是 false 則建立的菜單沒法顯示(三個點也沒有)。

僅僅讓菜單顯示出來是不夠的,我要對菜單進行操做,就用到方法 onOptionsItemSelected() 了。

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.add_item:
                Toast.makeText(this,"add",Toast.LENGTH_SHORT).show();
                break;
            case R.id.remove_item:
                Toast.makeText(this,"remove",Toast.LENGTH_SHORT).show();
                break;
        }
        return true;
    }
複製代碼

onOptionsItemSelected()方法中經過 item.getItemId() 來判斷咱們點擊了那個菜單項。

運行程序:

menu.png

會發如今標題欄多了三個點,點擊這三個點就會彈出菜單了。

彈出菜單.png

2.2.6 銷燬一個 Activity

想要銷燬 Activity 很簡單,Activity 給咱們提供了一個方法finish() 咱們只要調用一下這個方法,當前的 Activity 就會銷燬。

文字關注:

相關文章
相關標籤/搜索