drawable和mipmap目錄

1. 前言

11月分勞務(wù)派遣進(jìn)了家大公司orz等缀,開(kāi)始一個(gè)新的項(xiàng)目裕循。當(dāng)我將一張切圖分別放在drawable的各個(gè)dpi文件夾后丙猬,同事和我說(shuō)不需要弄那么多份切圖放在drawable中,沒(méi)必要费韭,而且會(huì)增大apk包的大小茧球,放一份切圖到mipmap-xhdpi中就夠了。

我很好奇為什么星持,但是他并沒(méi)有回答我抢埋,去群里問(wèn)了下,他們都說(shuō)我同事說(shuō)的是對(duì)的督暂,我感覺(jué)有點(diǎn)不對(duì)勁揪垄,我一直以為mipmap是專(zhuān)門(mén)用來(lái)放置launcher圖標(biāo)的,所以就自己探究一下逻翁。

2. 相關(guān)的文章

在android官網(wǎng)和StackOverflow上找了下饥努,主要是一下幾篇文章

2.1 android開(kāi)發(fā)者官網(wǎng)

原文:支持不同密度

由于運(yùn)行 Android 的設(shè)備具有多種屏幕密度,您應(yīng)始終提供能夠根據(jù)各種通用密度級(jí)別(低密度八回、中密度酷愧、高密度和超高密度)進(jìn)行定制的位圖資源驾诈。這有助于您在所有屏幕密度上獲得良好的圖形質(zhì)量和性能。

如需生成這些圖像溶浴,您應(yīng)以矢量格式的原始資源為基礎(chǔ)乍迄,按以下尺寸縮放比例生成每種屏幕密度對(duì)應(yīng)的圖像:

  • xhdpi:2.0
  • hdpi:1.5
  • mdpi:1.0(基準(zhǔn))
  • ldpi:0.75

這意味著,如果您為 xhdpi 設(shè)備生成了一幅 200x200 的圖像士败,則應(yīng)分別按 150x150闯两、100x100 和 75x75 圖像密度為 hdpi 設(shè)備、mdpi 設(shè)備和 ldpi 設(shè)備生成同一資源谅将。

然后漾狼,將生成的圖片文件置于 res/ 下的相應(yīng)子目錄中,系統(tǒng)將自動(dòng)根據(jù)運(yùn)行您的應(yīng)用的設(shè)備的屏幕密度選取正確的文件:

MyProject/
  res/
    drawable-xhdpi/
        awesomeimage.png
    drawable-hdpi/
        awesomeimage.png
    drawable-mdpi/
        awesomeimage.png
    drawable-ldpi/
        awesomeimage.png

之后饥臂,每當(dāng)您引用 @drawable/awesomeimage 時(shí)邦投,系統(tǒng)便會(huì)根據(jù)屏幕 dpi 選擇相應(yīng)的位圖。

將您的啟動(dòng)器圖標(biāo)置于 mipmap/ 文件夾中擅笔。

res/...
    mipmap-ldpi/...
        finished_launcher_asset.png
    mipmap-mdpi/...
        finished_launcher_asset.png
    mipmap-hdpi/...
        finished_launcher_asset.png
    mipmap-xhdpi/...
        finished_launcher_asset.png
    mipmap-xxhdpi/...
        finished_launcher_asset.png
    mipmap-xxxhdpi/...
        finished_launcher_asset.png

注:您應(yīng)該將所有啟動(dòng)器圖標(biāo)都置于 res/mipmap-[density]/ 文件夾而非 drawable/ 文件夾內(nèi),以確保啟動(dòng)器應(yīng)用使用最佳分辨率圖標(biāo)屯援。 如需了解有關(guān)使用 mipmap 文件夾的詳細(xì)信息猛们,請(qǐng)參閱管理項(xiàng)目概覽。

PS: 參閱管理項(xiàng)目那塊并沒(méi)有關(guān)于mipmap的說(shuō)明狞洋。

2.2 android開(kāi)發(fā)者官網(wǎng)官方博客

原文:Getting Your Apps Ready for Nexus 6 and Nexus 9

Provide at least an xxxhdpi app icon because devices can display large app icons on the launcher. It’s best practice to place your app icons in mipmap- folders (not the drawable- folders) because they are used at resolutions different from the device’s current density. For example, an xxxhdpi app icon can be used on the launcher for an xxhdpi device.

res/
   mipmap-mdpi/
      ic_launcher.png
   mipmap-hdpi/
      ic_launcher.png
   mipmap-xhdpi/
      ic_launcher.png  
   mipmap-xxhdpi/
      ic_launcher.png
   mipmap-xxxhdpi/   
      ic_launcher.png  # App icon used on Nexus 6 device launcher

Choosing to add xxxhdpi versions for the rest of your assets will provide a sharper visual experience on the Nexus 6, but does increase apk size, so you should make an appropriate decision for your app.

res/
   drawable-mdpi/
      ic_sunny.png
   drawable-hdpi/
      ic_sunny.png
   drawable-xhdpi/   
      ic_sunny.png
   drawable-xxhdpi/  # Fall back to these if xxxhdpi versions aren’t available
      ic_sunny.png
   drawable-xxxhdpi/ # Higher resolution assets for Nexus 6
      ic_sunny.png

2.3 StackOverflow

mipmap drawables for icons:https://stackoverflow.com/questions/23935810/mipmap-drawables-for-icons

mipmap vs drawable folders [duplicate]:https://stackoverflow.com/questions/28065267/mipmap-vs-drawable-folders

3. 測(cè)試文章中總結(jié)出mipmap的特性

3.1 針對(duì)density構(gòu)建apk時(shí)不會(huì)被剝離弯淘。

來(lái)自stackoverflow mipmap drawables for icon的回答(該回答中引用了goole工程師的博客,可靠度max)吉懊。

For launcher icons when building density specific APKs. Some developers build separate APKs for every density, to keep the APK size down. However some launchers (shipped with some devices, or available on the Play Store) use larger icon sizes than the standard 48dp. Launchers use getDrawableForDensity and scale down if needed, rather than up, so the icons are high quality. For example on an hdpi tablet the launcher might load the xhdpi icon. By placing your launcher icon in the mipmap-xhdpi directory, it will not be stripped the way a drawable-xhdpi directory is when building an APK for hdpi devices. If you're building a single APK for all devices, then this doesn't really matter as the launcher can access the drawable resources for the desired density.

有些開(kāi)發(fā)者為不同density的設(shè)備構(gòu)建單獨(dú)的APK庐橙,以保持APK的大小。(例如目標(biāo)設(shè)備是xhdpi的像素密度借嗽,那么打包時(shí)會(huì)剝離掉除了drawable-xhdpi的其他文件夾态鳖,從而保證apk的大小。PS:原來(lái)還有這種操作嗎恶导,我不知道怎么弄浆竭。)

但是一些launcher(某些設(shè)備,或者在Goolge Play中提供)使用會(huì)使用比標(biāo)準(zhǔn)48dp更大的尺寸惨寿。
launcher會(huì)使用getDrawableForDensity去獲取更大的icon(PS:也可能并不會(huì)邦泄,取決于定制的Launcher),并且在需要的時(shí)候縮小他們裂垦,而不是放大顺囊,所以這時(shí)候icon時(shí)高質(zhì)量的。比如在一個(gè)hdpi平板的啟動(dòng)器可能加載一個(gè)xhdpi的icon蕉拢。通過(guò)將你的啟動(dòng)器圖標(biāo)放置在mipmap-xhdpi目錄中特碳,它不會(huì)像構(gòu)建用于hdpi設(shè)備的APK一樣在drawable-xhdpi目錄下被剝離诚亚。
如果您正在為所有設(shè)備構(gòu)建一個(gè)APK,那么這并不重要测萎,因?yàn)閱?dòng)器可以訪(fǎng)問(wèn)所需密度的可繪制資源亡电。

注:上面的表達(dá)有點(diǎn)模糊,這里重新捋一下硅瞧。比如某個(gè)平板是hdpi的份乒,launcher一般使用的48dp的大小顯示icon,但是這個(gè)平板不使用48dp腕唧,而是56dp(例如錘子的九宮格桌面就會(huì)顯示很大的icon)或辖,那么啟動(dòng)器一般會(huì)通過(guò)getDrawableForDensity去獲取xhdpi的icon,獲取到的這個(gè)icon其實(shí)是適用在64dp的枣接。那么設(shè)置到56dp大小的Imageview時(shí)颂暇,就會(huì)被縮小,所以保證了icon的質(zhì)量但惶。但是因?yàn)閤hdpi的drawable已經(jīng)被剝離耳鸯,所以只能獲取到hdpi的,這樣icon會(huì)顯示就模糊了膀曾。而放置在mipmap目錄中的圖標(biāo)县爬,則不會(huì)被剝離。

--------------以上是原文加上個(gè)人翻譯(全靠google...)-------------


經(jīng)測(cè)試這個(gè)說(shuō)法基本可以說(shuō)是正確的添谊,但是有點(diǎn)問(wèn)題财喳。問(wèn)題在于最后那句話(huà)“如果您正在為所有設(shè)備構(gòu)建一個(gè)APK,那么這并不重要斩狱,因?yàn)閱?dòng)器可以訪(fǎng)問(wèn)所需密度的可繪制資源耳高。”

這個(gè)其實(shí)是有區(qū)別的所踊,在標(biāo)準(zhǔn)的launcher中泌枪,默認(rèn)是訪(fǎng)問(wèn)當(dāng)前設(shè)備density對(duì)應(yīng)的drawable目錄獲取資源,并不會(huì)判斷是否需要獲取更高密度的drawable秕岛。
而在定制的launcher中可能才有這種判斷工闺,因?yàn)槎ㄖ频膌anuncher也知道自己的圖標(biāo)是比標(biāo)準(zhǔn)launcher更大的,所以開(kāi)發(fā)者可能會(huì)嘗試獲取更高密度的資源來(lái)使用瓣蛀。

而如果放在mipmap中陆蟆,那么標(biāo)準(zhǔn)的launcher會(huì)自動(dòng)的去獲取更加合適的icon。

下面是一些在三星S8 android7.0上的測(cè)試惋增,此設(shè)備是的density是xxhdpi叠殷。

我在drawable-xxhdpi和mipmap-xxhdpi放置了一張44x44的icon。在drawable-xxxhdpi和mipmap-xxxhdpi放置了一張144x144的icon诈皿。

分別測(cè)試他們?cè)贏(yíng)ctivity上和launcher上顯示的區(qū)別林束。(直接手機(jī)屏幕截圖像棘,所以圖片會(huì)很大,如果有縮放請(qǐng)查看原圖)

drawable目錄 mipmap目錄
Activity中
Launcher中

如圖壶冒,可以看到缕题,在A(yíng)ctivity中,有一個(gè)全屏的ImageView胖腾。分別在其中加載Drawable和mipmap的資源烟零。
發(fā)現(xiàn)他們都是直接加載對(duì)應(yīng)的xxhdpi中的資源,也就是48x48的那張icon咸作。

然后在launcher中锨阿,如果引用drawable目錄中的資源,那么應(yīng)用圖標(biāo)看起來(lái)有點(diǎn)模糊记罚,加載的應(yīng)該是xxhdpi中的icon墅诡。
而如果引用mipmap目錄,那么應(yīng)用圖標(biāo)就清晰了很多桐智,加載的應(yīng)該是xxxhdpi中的icon末早。

結(jié)論:在A(yíng)pp中,無(wú)論你將圖片放在drawable還是mipmap目錄说庭,系統(tǒng)只會(huì)加載對(duì)應(yīng)density中的圖片然磷,例如xxhdpi的設(shè)備,只會(huì)加載drawable-xxhdpi或者mipmap-xxhdpi中的資源口渔。
而在Launcher中,如果使用mipmap穿撮,那么Launcher會(huì)自動(dòng)加載更加合適的密度的資源缺脉。

或者說(shuō)悦穿,mipmap會(huì)自動(dòng)選擇更加合適的圖片僅在launcher中有效攻礼。

3.2 在圖片縮放時(shí)保證更高的質(zhì)量(錯(cuò)誤的,沒(méi)有這個(gè)特性)

在問(wèn)題中有這個(gè)文章的引用逛钻。
https://programmium.wordpress.com/2014/03/20/mipmapping-for-drawables-in-android-4-3/

意思是僚焦,使用mipmap時(shí),放大縮小的操作會(huì)使圖片具有更高的質(zhì)量曙痘。并且在圖像渲染時(shí)間芳悲,提高質(zhì)量和減輕GPU壓力方面具有優(yōu)勢(shì)立肘。

經(jīng)測(cè)試,該文章基本瞎扯名扛,是放大還是縮小谅年,圖片顯示質(zhì)量一模一樣。也可能是在高版本安卓中肮韧,無(wú)論是drawable目錄還是mipmap目錄都已經(jīng)使用了mipmap技術(shù)融蹂。

以下是在三星s8上的測(cè)試,android7.0惹苗。分別使用48x48像素的icon放大到984x984測(cè)試放大時(shí)的質(zhì)量殿较,192x192像素的icon縮小到20x20的質(zhì)量,看到的效果如下表格(圖片太大桩蓉,已經(jīng)進(jìn)行了縮放適合排版)淋纲。

drawable 目錄 mipmap 目錄
放大
縮小

4. drawable和mipmap目錄的結(jié)論

  1. 在A(yíng)pp中,無(wú)論你將圖片放在drawable還是mipmap目錄院究,系統(tǒng)只會(huì)加載對(duì)應(yīng)density中的圖片洽瞬。
    而在Launcher中,如果使用mipmap业汰,那么Launcher會(huì)自動(dòng)加載更加合適的密度的資源伙窃。

  2. 應(yīng)用內(nèi)使用到的圖片資源,并不會(huì)因?yàn)槟惴旁趍ipmap或者drawable目錄而產(chǎn)生差異样漆。單純只是資源路徑的差異R.drawable.xxx或者R.mipmap.xxx为障。(也可能在低版本系統(tǒng)中有差異)

  3. 一句話(huà)來(lái)說(shuō)就是,自動(dòng)跨設(shè)備密度展示的能力是launcher的放祟,而不是mipmap的鳍怨。

總的來(lái)說(shuō),app圖標(biāo)(launcher icon) 必須放在mipmap目錄中跪妥,并且最好準(zhǔn)備不同密度的圖片鞋喇,否則縮放后可能導(dǎo)致失真。

而應(yīng)用內(nèi)使用到的圖片資源眉撵,放在drawable目錄亦或是mipmap目錄中是沒(méi)有區(qū)別的侦香,該準(zhǔn)備多個(gè)密度的還是要準(zhǔn)備多個(gè)密度,如果只想使用一份切圖纽疟,那盡量將切圖放在高密度的文件夾中罐韩。

5. 是否需要多份不同密度的切圖的問(wèn)題

關(guān)于這個(gè)問(wèn)題,也可以看看郭霖大神的一篇文章污朽。
Android drawable微技巧伴逸,你所不知道的drawable的那些細(xì)節(jié)

文章中沒(méi)有獲取bitmap原始大小進(jìn)行對(duì)比,只是獲取ImageView寬高。
雖然ImageView寬高就是根據(jù)Bitmap大小來(lái)的错蝴。

這里就再做一遍測(cè)試洲愤。

測(cè)試代碼:

<resources>
    <string name="app_name">Drawable對(duì)比</string>

    <string name="device_dpi" formatted="true">當(dāng)前設(shè)備的dpi:%s</string>
    <string name="screen_size" formatted="true">當(dāng)前屏幕分辨率:%d x %d</string>
    <string name="image_size" formatted="true">當(dāng)前ImageView大小:%d x %d</string>
    <string name="bitmap_size" formatted="true">當(dāng)前bitmap大星昝獭:%d x %d</string>
</resources>
<LinearLayout 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:layout_marginBottom="8dp"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:layout_marginTop="8dp"
    android:orientation="vertical"
    tools:context="com.aitsuki.drawable.MainActivity">

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

    <TextView
        android:id="@+id/tv_screen_size"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_dpi"
        android:text="@string/screen_size" />

    <TextView
        android:id="@+id/tv_image_size"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_screen_size"
        android:text="@string/image_size" />

    <TextView
        android:id="@+id/tv_bitmap_size"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_image_size"
        android:text="@string/bitmap_size"/>

    <ImageView
        android:id="@+id/iv_asuna"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_image_size"
        android:layout_marginTop="16dp"
        android:src="@drawable/asuna" />

</LinearLayout>
package com.aitsuki.drawable;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

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

        float density = getResources().getDisplayMetrics().density;
        final int widthPixels = getResources().getDisplayMetrics().widthPixels;
        final int heightPixels = getResources().getDisplayMetrics().heightPixels;

        TextView tv_dpi = findViewById(R.id.tv_dpi);
        final TextView tv_screen_size = findViewById(R.id.tv_screen_size);
        final TextView tv_image_size = findViewById(R.id.tv_image_size);
        final TextView tv_bitmap_size = findViewById(R.id.tv_bitmap_size);
        final ImageView iv_asuna = findViewById(R.id.iv_asuna);

        tv_bitmap_size.setText(
                getResources().getString(R.string.bitmap_size,
                        iv_asuna.getDrawable().getIntrinsicWidth(),
                        iv_asuna.getDrawable().getIntrinsicHeight()));

        tv_dpi.setText(getString(R.string.device_dpi, getDpiString(density)));
        tv_screen_size.setText(
                getResources().getString(R.string.screen_size, widthPixels, heightPixels ));

        tv_image_size.postDelayed(new Runnable() {
            @Override
            public void run() {
                int height = iv_asuna.getHeight();
                int width = iv_asuna.getWidth();
                tv_image_size.setText(getString(R.string.image_size, width, height));
            }
        }, 1000);
    }

    private String getDpiString(float density) {
        if (density == 0.75f) {
            return "lhdpi";
        } else if (density == 1f) {
            return "mhdpi";
        } else if( density == 1.5f) {
            return "hdpi";
        } else if (density == 2f) {
            return "xhdpi";
        } else if (density == 3f) {
            return "xxhpdi";
        } else if (density == 4f) {
            return "xxxhdpi";
        } else {
            return density +"";
        }
    }
}

測(cè)試用的圖片:亞斯娜柬赐,300x300


asuna.jpg

因?yàn)槲沂褂玫氖菧y(cè)試機(jī)是三星s8, 密度3.0,對(duì)應(yīng)資源文件夾是drawable-xxhdpi官紫。
所以肛宋,先將圖片放置到xxhdpi中,然后再放到其他目錄中進(jìn)行對(duì)比束世。
下面直接上測(cè)試的結(jié)果酝陈。

使用目錄 屏幕截圖(包含Bitmap大小和Imageview大小) 占用內(nèi)存
xxhdpi
hdpi
xxxhdpi

可以看到毁涉,當(dāng)圖片放到xxhdpi時(shí)沉帮,顯示圖片原始大小300x300。而放到hdpi時(shí)則是600x600贫堰,放到xxxhdpi時(shí)則是225x225穆壕。

引用郭霖大神博文中的一段話(huà)就是:

當(dāng)我們使用資源id來(lái)去引用一張圖片時(shí),Android會(huì)使用一些規(guī)則來(lái)去幫我們匹配最適合的圖片其屏。什么叫最適合的圖片喇勋?比如我的手機(jī)屏幕密度是xxhdpi,那么drawable-xxhdpi文件夾下的圖片就是最適合的圖片偎行。因此川背,當(dāng)我引用android_logo這張圖時(shí),如果drawable-xxhdpi文件夾下有這張圖就會(huì)優(yōu)先被使用蛤袒,在這種情況下熄云,圖片是不會(huì)被縮放的。但是汗盘,如果drawable-xxhdpi文件夾下沒(méi)有這張圖時(shí)皱碘, 系統(tǒng)就會(huì)自動(dòng)去其它文件夾下找這張圖了询一,優(yōu)先會(huì)去更高密度的文件夾下找這張圖片隐孽,我們當(dāng)前的場(chǎng)景就是drawable-xxxhdpi文件夾,然后發(fā)現(xiàn)這里也沒(méi)有android_logo這張圖健蕊,接下來(lái)會(huì)嘗試再找更高密度的文件夾菱阵,發(fā)現(xiàn)沒(méi)有更高密度的了,這個(gè)時(shí)候會(huì)去drawable-nodpi文件夾找這張圖缩功,發(fā)現(xiàn)也沒(méi)有晴及,那么就會(huì)去更低密度的文件夾下面找,依次是drawable-xhdpi -> drawable-hdpi -> drawable-mdpi -> drawable-ldpi嫡锌。

當(dāng)縮放時(shí)虑稼,會(huì)根據(jù)系統(tǒng)和使用的文件夾的density進(jìn)行縮放琳钉。

dpi density
xxhdpi 3
hdpi 1.5
xxxhdpi 4
  • 當(dāng)使用和設(shè)備相同的density的xxhdpi文件夾時(shí),圖片顯示原始大小300x300.
  • 當(dāng)使用hdpi的圖片時(shí)蛛倦,因?yàn)樵搱D片在低密度下歌懒,系統(tǒng)會(huì)認(rèn)它不夠大,會(huì)自動(dòng)幫我們放大溯壶, 300 * 3 / 1.5 ==> 600x600
  • 當(dāng)使用xxxhdpi時(shí)及皂,300 * 3 / 4 ==> 225x225

關(guān)于內(nèi)存的使用,android加載圖片到ImageView時(shí)且改,具體使用到多少內(nèi)存我不太清楚(從上面的內(nèi)存使用截圖中很難看的出來(lái))验烧。

但是關(guān)于bitmap使用到多少內(nèi)存倒是非常容易計(jì)算的。
默認(rèn)情況下又跛,android使用argb的方式加載圖片資源碍拆,也就是一個(gè)像素點(diǎn)占用4個(gè)字節(jié)。而300x300分辨率的圖片就占用了360000個(gè)字節(jié)效扫,也就是350多K的內(nèi)存倔监。

同樣一張圖片,我們放到不同目錄下導(dǎo)致出現(xiàn)不同的內(nèi)存使用結(jié)果菌仁。如果放到hdpi中浩习,那么bitmap使用的內(nèi)存多了4倍,整整1.3M的內(nèi)存济丘!

那么谱秽,同事跟我說(shuō)只需要一份切圖放到mipmap-xhdpi中會(huì)出現(xiàn)什么問(wèn)題呢?

關(guān)于這點(diǎn)摹迷,其實(shí)郭霖大神說(shuō)的不對(duì)“圖片資源應(yīng)該盡量放在高密度文件夾下疟赊,這樣可以節(jié)省圖片的內(nèi)存開(kāi)支”
事實(shí)上,內(nèi)存的使用基本是一樣的峡碉,因?yàn)椴煌琩rawable會(huì)放置不同分辨率的圖片近哟。
例如你在drawable-xhdpi放置30x30的icon,在drawable-xxhdpi放置45x45的icon鲫寄。當(dāng)一個(gè)xxhdpi的設(shè)備去加載這張圖片時(shí)吉执,會(huì)自動(dòng)選擇45x45的圖片,占用8k左右的內(nèi)存地来。
如果你只在drawable-xhdpi放置30x30的icon戳玫,而不在drawable-xxhdpi中放置任何icon,那么系統(tǒng)會(huì)自動(dòng)將30x30的圖片放大到45x45未斑,也是占用8k左右的內(nèi)存咕宿。

所以,同事跟我說(shuō)只需要一份切圖放到mipmap-xhdpi在內(nèi)存的使用上是沒(méi)有什么大問(wèn)題的,確實(shí)能有效的控制apk包的大小府阀。

小問(wèn)題則是缆镣,在高分辨率或者低分辨率的設(shè)備中,圖片可能因?yàn)榻?jīng)過(guò)縮放導(dǎo)致模糊或者失真试浙,特別是分辨率比較大的圖片费就,比如引導(dǎo)頁(yè)和啟動(dòng)頁(yè)的大圖。但是因?yàn)檫x擇的是xhdpi是市面上最普及的分辨率川队,所以也不會(huì)存在什么大問(wèn)題力细,不過(guò)我更加推薦在xxhdpi中多放一份切圖,因?yàn)榇蠖鄶?shù)旗艦機(jī)已經(jīng)是xxhdpi的分辨率了固额。

最后眠蚂,切圖放在mipmap-xhdpi和drawable-xhdpi中是沒(méi)有區(qū)別的!
那些跟我說(shuō)放在mipmap中比較好斗躏,只需要一份逝慧,會(huì)縮放,會(huì)更省內(nèi)存的網(wǎng)友我敲你lailai啄糙。

現(xiàn)在時(shí)間是:2018年1月12日凌晨05點(diǎn)57分笛臣,現(xiàn)在睡覺(jué)上班不會(huì)遲到吧……

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市隧饼,隨后出現(xiàn)的幾起案子沈堡,更是在濱河造成了極大的恐慌,老刑警劉巖燕雁,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诞丽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡拐格,警方通過(guò)查閱死者的電腦和手機(jī)僧免,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)捏浊,“玉大人懂衩,你說(shuō)我怎么就攤上這事〗鹱伲” “怎么了浊洞?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)热康。 經(jīng)常有香客問(wèn)我沛申,道長(zhǎng)劣领,這世上最難降的妖魔是什么姐军? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上奕锌,老公的妹妹穿的比我還像新娘著觉。我一直安慰自己,他們只是感情好惊暴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布饼丘。 她就那樣靜靜地躺著,像睡著了一般辽话。 火紅的嫁衣襯著肌膚如雪肄鸽。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天油啤,我揣著相機(jī)與錄音典徘,去河邊找鬼。 笑死益咬,一個(gè)胖子當(dāng)著我的面吹牛逮诲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播幽告,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼梅鹦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了冗锁?” 一聲冷哼從身側(cè)響起齐唆,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冻河,沒(méi)想到半個(gè)月后蝶念,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芋绸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年媒殉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摔敛。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡廷蓉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出马昙,到底是詐尸還是另有隱情桃犬,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布行楞,位于F島的核電站攒暇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏子房。R本人自食惡果不足惜形用,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一就轧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧田度,春花似錦妒御、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至奸笤,卻和暖如春惋啃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背监右。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工肥橙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秸侣。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓存筏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親味榛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子椭坚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355