我目前正在开发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)。直到现在布局看起来像这样
但是当我添加一个drawable-hdpi文件夹时,它与drawable-ldpi中的图像相同,布局会更改为
为什么布局会改变?虽然拥有相同的设备(Nexus One)和相同的图像(90x90)
答案 0 :(得分:0)
如果你说你正在开发320dpi,那应该是xhdpi。
一组六个广义密度:
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