Android筆記(13):drawablw及mipmap圖片資源

Photo by Dan Smedley on Unsplash


drawable 資源是 Android 開發過程中,最常被使用的資源。在 Android筆記(3):專案建立與IDE操作介面文章中說明建立專案時所建立的資源目錄,資源目錄 res 下有 drawable 和 mipmap 兩個目錄都是放置圖片的,其差別在於 drawable 目錄放的是 .png 、.jpg、.gif、.9.png 的圖片,mipmap 是放置 icon 的目錄。除了圖片檔外,還可以使用 XML 檔 定義圖片內容,直接由系統編譯成 drawable 子類別物件,就可以讓需要用到圖片的元件使用。

要使用資源中 drawable 下的圖片有2種方法,一種是在 Layout 佈局檔下直接編輯 XML 檔,使用與圖片有關的元件,如 ImageView、ImageButton 等元件,再使用 src 屬性關連到 drawable 的圖片即可。另一種方法是使用 java 程式存取中 drawable 中的圖片。

[在 drawable 新增圖片]

要如何將圖片檔案放置到 drawable 目錄中呢?很簡單,就跟在 Windows 作業系統中的檔案複製功能一樣,以下操作的步驟:
(1) 先選定檔案按右鍵選擇「複製」,或直接對檔案按下  Ctrl   +  C  。
(2) 開啟 Android Studio,在專案的目錄下找到 drawable 按右鍵選擇「Paste」,如下圖:
(3) 出現選擇放置的目錄,通常放置在 drawable 目錄內,如果放到 drawable-v24 目錄內,會導致 7.0 版以下的手機/平板找不到圖片。

(4) 出現以下畫面,可修改檔案名稱,或直接按下  OK  就完成了。
drawable 存放的檔名,不能以數字開頭,且必須是小寫的英文字[a-z]和數字[0-9]及區隔副檔名的[.],否則編譯時會產生錯誤。

[在Layout佈局檔中使用圖片資源]

根據上面步驟,已經將 Photo15.jpg 複製進 drawable,開啟 res\layout 目錄下的 activity_main.xml,增加一個 ImageView 元件,設定 src 屬性為 drawable 內的資源名稱,就設定好圖片的顯示,如下圖紅框處:


[在 java 中使用圖片資源]

在 java代碼中,可以使用 setImageBitmap 指定 drawable 給一個圖片類元件,如要取得元件資源,可以使用 Resource.getDrawable(R.mipmap.xxx) 來取得。
開啟 java 目錄下的 MainActivity.java 修改如下:
package com.example.app;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageView iv = new ImageView(this) ;   //建立ImageView物件
        // 將圖片設定給ImageView物件
        iv.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.photo15));
        this.setContentView(iv);   //將ImageView設定給目前的view
    }
}

MainActivity.java 檔案內主要修改三行,如以下紅色框處:
上述的兩個方法,結果畫面如下:


[mipmap]

一樣是放置圖片的目錄,為何要分成 drawable 和 mipmap?,Google 官方的解釋是效能優化,mipmap 佔用的記憶體較小,適用等比例縮放不會失真的圖檔,若有考慮效能問題,一般會建議使用 mipmap。新增 mipmap 圖示檔的方法與上述的 drawable 一樣,將圖示複製到對應的目錄即可。

Android Studio 建立專案時,會再 mipmap 目錄下,建立兩個目錄 ic_launcher 及 ic_launcher_round ,內有預設不同解析度的小綠人圖示。從 Android 7.1.1 開始系統中的應用圖示改為圓形圖示,為了讓其他版本的系統也能正常使用,mipmap 子目錄中會自動產生圓形 ic_launcher_round 與方形 ic_launcher 兩種圖示。如下圖目錄結構:
在 Android Studio 看到的目錄結構實際上與作業系統下的目錄存放方式不同,其目錄存放空間會建立:mipmap-xxxhdpi(超超超高解析度)、mipmap-xxhdpi(超超高解析度)、mipmap-xhdpi(超高解析度)、mipmap-hdpi(高解析度)和mipmap-mdpi(中解析度)等 5 個目錄,以及 mipmap-anydpi-v26 目錄,分別產生與目錄解析度對應的 ic_launcher 或 ic_launcher_round 圖檔。
不同目錄存放的解析度如下:
來源:Developers

以下整理幾個免費的圖片或圖示的網站作為參考:

[參考資料]


Post a Comment

較新的 較舊