androidmipmap的多方面解析

一、基本概念

androidmipmap是一種用於存儲不同分辨率圖片的Android資源類型。它是標籤的一個子標籤,可在AndroidManifest.xml文件的<application>標籤內指定。

與存儲在drawable文件夾內的圖片相比,存放在mipmap文件夾內的圖片會被系統更快地加載,並且可根據設備的屏幕密度來自動選擇不同分辨率的圖片。

二、使用方法

1、在Android Studio中創建項目時,會自動生成mipmap-hdpi、mipmap-mdpi、mipmap-xhdpi、mipmap-xxhdpi、mipmap-xxxhdpi文件夾。可以將對應分辨率的圖片直接拖入對應文件夾中。

├───app
│   ├───src
│   │   ├───main
│   │   │   ├───mipmap-hdpi
│   │   │   ├───mipmap-mdpi
│   │   │   ├───mipmap-xhdpi
│   │   │   ├───mipmap-xxhdpi
│   │   │   └───mipmap-xxxhdpi

2、在AndroidManifest.xml文件的<application>標籤內指定mipmap資源。

<application
  ...
  android:icon="@mipmap/ic_launcher">

三、優勢

1、加快圖片加載速度。

也許你注意到了,可在drawable文件夾對應各種dpi目錄下增加圖片資源,實現多分辨率適配。但Android會在開啟Activity或者創建BitmapFactory對象時才加載該圖片並適配不同分辨率。相比之下,mipmap在activity啟動前就會將不同分辨率的圖片根據設備特性預加載,避免了在加載過程中的卡頓。

2、可自動根據設備的屏幕密度選擇不同分辨率的圖片。

Android將設備根據屏幕密度劃分為五種,分別是mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi。而五種密度下對應的mipmap文件夾也互不相同。因此,我們只需在mipmap文件夾下放入不同分辨率的圖片即可,Android系統會在運行時自動根據屏幕密度選擇合適的圖片。

四、注意事項

1、圖標資源必須在mipmap目錄下,否則發布應用時會遇到警告。

2、mipmap只是提供了比drawable更為快速高效的加載和自適應方法,在不必要使用高分辨率圖片時應該盡量避免使用。因為高分辨率的圖片會佔用更多的內存空間,不僅會拖慢應用的運行速度,還容易導致內存溢出。

五、示例代碼

├───app
│   ├───src
│   │   ├───main
│   │   │   ├───mipmap-hdpi
│   │   │   │       ic_launcher.png
│   │   │   ├───mipmap-mdpi
│   │   │   ├───mipmap-xhdpi
│   │   │   ├───mipmap-xxhdpi
│   │   │   └───mipmap-xxxhdpi
│   │   │   ├───AndroidManifest.xml
│   │   │   └───java
│   │   │       └───com
│   │   │           └───example
│   │   │               └───myapplication
│   │   │                   └───MainActivity.java

MainActivity.java中的代碼如下:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

AndroidManifest.xml中的代碼如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

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

</manifest>

原創文章,作者:UGNAX,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/332119.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
UGNAX的頭像UGNAX
上一篇 2025-01-21 17:30
下一篇 2025-01-21 17:30

相關推薦

  • Python取較大值的多方面

    Python是一款流行的編程語言,廣泛應用於數據分析、科學計算、Web開發等領域。作為一名全能開發工程師,了解Python的取較大值方法非常必要。本文將從多個方面對Python取較…

    編程 2025-04-27
  • OWASP-ZAP:多方面闡述

    一、概述 OWASP-ZAP(Zed Attack Proxy)是一個功能豐富的開放源代碼滲透測試工具,可幫助開發人員和安全專業人員查找應用程序中的安全漏洞。它是一個基於Java的…

    編程 2025-04-25
  • Java中字符串根據逗號截取的多方面分析

    一、String的split()方法的使用 Java中對於字符串的截取操作,最常使用的是split()方法,這個方法可以根據給定的正則表達式將字符串切分成多個子串。在對基礎類型或簡…

    編程 2025-04-25
  • 定距數據的多方面闡述

    一、什麼是定距數據? 定距數據是指數據之間的差距是有真實的、可比較的含義的數據類型。例如長度、時間等都屬於定距數據。 在程序開發中,處理定距數據時需要考慮數值的大小、單位、精度等問…

    編程 2025-04-25
  • Lua 協程的多方面詳解

    一、什麼是 Lua 協程? Lua 協程是一種輕量級的線程,可以在運行時暫停和恢復執行。不同於操作系統級別的線程,Lua 協程不需要進行上下文切換,也不會佔用過多的系統資源,因此它…

    編程 2025-04-24
  • Midjourney Logo的多方面闡述

    一、設計過程 Midjourney Logo的設計過程是一個旅程。我們受到大自然的啟發,從木質和地球色的調色板開始。我們想要營造一種旅途的感覺,所以我們添加了箭頭和圓形元素,以表示…

    編程 2025-04-24
  • Idea隱藏.idea文件的多方面探究

    一、隱藏.idea文件的意義 在使用Idea進行開發時,經常會聽說隱藏.idea文件這一操作。實際上,這是為了保障項目的安全性和整潔性,避免.idea文件的意外泄露或者被其他IDE…

    編程 2025-04-24
  • 如何卸載torch——多方面詳細闡述

    一、卸載torch的必要性 隨着人工智能領域的不斷發展,越來越多的深度學習框架被廣泛應用,torch也是其中之一。然而,在使用torch過程中,我們也不可避免會遇到需要卸載的情況。…

    編程 2025-04-23
  • Unity地形的多方面技術詳解

    一、創建和編輯地形 Unity提供了可視化界面方便我們快速創建和編輯地形。在創建地形時,首先需要添加Terrain組件,然後可以通過左側Inspector面板中的工具來進行細節的調…

    編程 2025-04-23
  • 跳出while的多方面探討

    一、break語句跳出while循環 在while循環的過程中,如果需要跳出循環,可以使用break語句。break語句可以直接退出當前的循環體,繼續執行後面的代碼。 while …

    編程 2025-04-23

發表回復

登錄後才能評論