Android:当我删除drawable-hdpi文件夹时为什么布局会发生变化

时间:2015-08-19 14:25:10

标签: android-layout android-drawable

我目前正在开发320dp设备的布局。我有layout-sw320dp,它有以下代码用于显示6个ImageButtons。

<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="4dp" >

<!-- The main content view -->
<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:rowCount="3"
        android:columnCount="2"
        android:paddingTop="10dp"
        android:paddingLeft="@dimen/activity_horizontal_margin">

        <ImageButton
            android:layout_row="0"
            android:layout_column="0"
            android:padding="10dp"
            android:src="@drawable/info_image_button_90_90"
            android:id="@+id/info_image_button" />

        <ImageButton
            android:layout_row="0"
            android:layout_column="1"
            android:padding="10dp"
            android:src="@drawable/matri_image_button_90_90"
            android:id="@+id/event_imgae_button" />

        <ImageButton
            android:layout_row="1"
            android:layout_column="0"
            android:padding="10dp"
            android:src="@drawable/events_image_button_90_90"
            android:id="@+id/image_button_10" />

        <ImageButton
            android:layout_row="1"
            android:layout_column="1"
            android:padding="10dp"
            android:src="@drawable/ann_image_button_90_90"
            android:id="@+id/image_button_11" />

        <ImageButton
            android:layout_row="2"
            android:layout_column="0"
            android:padding="10dp"
            android:src="@drawable/events_image_button_90_90"
            android:id="@+id/image_button_20" />

        <ImageButton
            android:layout_row="2"
            android:layout_column="1"
            android:padding="10dp"
            android:src="@drawable/events_image_button_90_90"
            android:id="@+id/image_button_21" />

    </GridLayout>
</FrameLayout>

<!-- The navigation drawer  -->
<ListView
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:id="@+id/drawer_list_view"
    android:layout_gravity="start"
    android:background="@color/white"
    android:fitsSystemWindows="true"
     />

</android.support.v4.widget.DrawerLayout>

我在drawable-ldpi中有ImageButton的图像(90x90)。直到现在布局看起来像这样

enter image description here

但是当我添加一个drawable-hdpi文件夹时,它与drawable-ldpi中的图像相同,布局会更改为

enter image description here

为什么布局会改变?虽然拥有相同的设备(Nexus One)和相同的图像(90x90)

1 个答案:

答案 0 :(得分:0)

如果你说你正在开发320dpi,那应该是xhdpi。

来自developer.android.com

  

一组六个广义密度:

ldpi (low) ~120dpi
mdpi (medium) ~160dpi
hdpi (high) ~240dpi
xhdpi (extra-high) ~320dpi
xxhdpi (extra-extra-high) ~480dpi
xxxhdpi (extra-extra-extra-high) ~640dpi

基本上,系统会尝试为您的drawable找到最佳匹配。当你只将它们放在ldpi文件夹中时,那是唯一的选择 - 拿走它们并按xhdpi / ldpi = 320/120放大它们。当您在hdpi文件夹中添加相同图像时,这是最佳匹配,但它们现在仅按xhdpi / hdpi = 320/240放大,因此尺寸较小。

通常情况下,如果您发现图像尺寸合适,并且想要在不同密度下保持一致的尺寸,则需要保持它们之间的比例。

传统上,mdpi被认为是标准,比率为1:1,其余部分如下:

ldpi =    1 : 0.75
mdpi =    1 : 1
hdpi =    1 : 1.5
xhdpi =   1 : 2
xxhdpi =  1 : 3
xxxhdpi = 1 : 4