[Android Studio #3] 使用Android Asset Studio產生圖示檔與@+id與@id之差異

drawable相關資料夾(預設是drawable-hdpi、drawable-mdpi、drawable-xdpi、drawable-xxdpi)裡都有個代表應用程式的圖示圖檔ic_launcher.png(ic=icon),每個應用程式預設就必須提供四種不同解析度的圖檔,幸好Android Asset Studio提供了簡便産生此類圖檔的服務,只要上傳一個圖片,它就能幫我們自動産生出四種圖檔。
Android Asset Studio

Android Asset Studio的操作很簡單,用IMAGE上傳圖檔後,網頁就會顯示四種解析度的圖示畫面,調整需要的選項後,網頁會自動顯示出對應的大小圖示,按DOWNLOAD ZIP就能下載檔案,解壓縮到 res 資料夾裡就可能建立新的圖示。在Android Studio的Project對話窗裡雙擊ic_launch.png就能在新分頁顯示圖片,如果畫面沒有立即更新的話,可以點擊功能表 File > Synchronize,立即做檔案系統的同步處理。

增加ImageView元件

接著我們再把activity_main.xml切換到Design頁面,點選調色盤上的ImageView,將游標移到手機畫面中央放開,剛開始圖形只是一個小方塊,雙擊之並選擇上述的res/drawable裡的ic_launch.png,再修改右側的ImageView元件的相關特性(Properties),例如layout:width、layout:height等。
Place an image

layout:width與layout:height能指定元件的寬度與高度,其值為下列三類之一:

  • 一般的尺寸單位:如300dp
  • wrap_content:包裹住元件的尺寸大小
  • match_parent或fill_parent:填滿其父元件的尺寸大小

當我們放置第二個元件後,activity_main.xml裡的元件設定裡就會多出android:id的屬性,用來辨識不同的元件:

<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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

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

    <ImageView
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:id="@+id/imageView"
        android:src="@drawable/ic_launcher"
        android:layout_alignParentStart="false"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/textView" />

</RelativeLayout>

@+id與@id有何差異

元件ID有兩種指定格式:

  • @+id/元件ID:指定元件的ID,加號的意義是讓運行時的系統建立該元件。有時我們在第一個元件要參考到第二個元件,此時就必須使用@+id/第二個元件ID。也就是說加號是為了解決向前參考(forward reference)而設計的:要參考尚未定義的元件時,就要使用@+id
  • @id/元件ID:參考已經定義過的元件

舉例說明,如果我們把activity_main.xml裡ImageView元件的定義移到TextView元件的前面時,ImageView裡的android:layout_toRightOf="@+id/textView"就一定要使用@+id/textView(因為textView在imageView後面尚未定義,而我們就要先使用它了),原本例子裡先寫TextView再寫ImageView時,其實是可以寫成@id/textView的(因為textView已經有定義了)。

不過,使用Android Studio建立activity_main.xml時應該不用去特別注意這些細節,它固定使用@+id!

##

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *