1. 程式人生 > >android drawable資料夾放入圖片規則

android drawable資料夾放入圖片規則

    1、在中Menifest中新增子元素,android:anyDensity="true"時,應用程式安裝在不同密度的終端上時,程式會分別載入xxhdpi、xhdpi、hdpi、mdpi、ldpi資料夾中的資源。

    相反,如果設為false,即使在資料夾下擁有相同資源,應用不會自動地去相應資料夾下尋找資源。(引用)

    2、如果有預設資料夾drawable,則系統如果在其他dpi資料夾下找不到圖片時會使用drawable下面的圖片,但是系統使用預設drawable資料夾和drawable_dpi資料夾下圖片的方式不同:

    drawable資料夾下圖片首先進行的是普通的縮放,再進行.9規則縮放,而drawable_dpi下圖片則只會進行.9規則縮放。

示例:

    現在有一部螢幕密度為320的手機,則會使用drawable_xhdpi資料夾下的圖片,但是如果在layout中規定使用圖片作為某控制元件背景,控制元件高度為50dp,而drawable_xhdpi下圖片高度為50sp,這個時候則會進行.9規則縮放,高度擴大一倍

但是如果在drawable圖片下使用此圖片,則會先進行普通縮放,再進行.9縮放

原始圖片:

大小:343*57

佈局程式碼:

    <pre name="code" class="java">    <ImageView
        android:layout_width="171dp"
        android:layout_height="50dp"
        android:src="@drawable/spinner"/>
    <Spinner
        android:layout_width="171dp"
        android:layout_height="80dp"
        android:layout_marginTop="50dp"
        android:background="@drawable/spinner"></Spinner>


放入drawable後效果

分析:明明171dp在xhdpi中是372px,為什麼寬度會進行.9規則縮放?因為在drawable中圖片會先進行普通縮放,先將373*57轉化為373dp*57dp,然後發現view中只有171dp,所以再進行.9規則縮放,將長度縮短兩倍。同理,高度為80dp,所以再將高度進行.9規則縮放,拉長1.6倍。

放入drawable-xhdpi後效果

分析:可以看出才,長度沒有進行.9規則縮放,高度進行了.9規則縮放。原因是系統分析圖片長度為373px,view為171dp寬,轉化為px為372,基本無需縮放,高度為80dp,轉化為px為160,需要拉伸3.2倍,所以才會出現高度拉伸比上一張圖片更劇烈的情況。

分析

Ps

這點對於非.9圖片沒有影響