一、基本概念
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/n/332119.html