1

我正在尝试编写应用程序女巫在所有(或大多数)Android 手机上看起来都相似。我有两部手机有问题:三星 Galaxy Ace 2 和三星 Galaxy mini 2。在 Galaxy ace 中占据整个屏幕的布局对于 Galaxy mini 来说太大了。

首先,我尝试为 ldpi 和 mdpi 指定不同的尺寸,但似乎两部手机都使用了 mdpi 值。然后我试图通过屏幕大小来区分它们,并制作文件夹值-正常-mdpi。我认为 ace 应该是“大”的,它具有 480x800 分辨率并且根据文档应该很大:Supporting Multiple Screens。然而,这两款手机都从“normal-mdpi”文件夹中获取值。另一方面,我看到两部手机上的应用程序看起来都一样,我该怎么做?

编辑:

想象一下,我有一个非常简单的布局,只有简单的视图:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />

<Button
    android:id="@+id/button3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />

<Button
    android:id="@+id/button4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />

<Button
    android:id="@+id/button5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />

<TextView
    android:id="@+id/textView5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<Button
    android:id="@+id/button6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" /></LinearLayout>

最后一个按钮在较小的手机上不可见。如果我想让这两者看起来相同,我应该怎么做?

4

3 回答 3

1

好吧,事实证明这两者都不是mdpi设备:
三星Galaxy Ace 2:WVGA(480x800)分辨率(约244 dpi)= hdpi
三星Galaxy Mini 2:QVGA(240×320)分辨率(约127 dpi)= ldpi

因此,您的图形的可绘制文件夹应该是:
res/drawable-ldpi
res/drawable-hdpi

请注意,您应该提供正确分辨率(120 和 240 dpi)的 png。
您可以选择提供普通分辨率图形(160 dpi,即mdpi),对于 ldpi 设备,它将被缩放到 120 dpi (0.75x),对于 hdpi 设备,它将被缩放到 240dpi (2.0x)

于 2013-12-11T21:56:42.603 回答
1

我认为使用维度是一种很好的做法,但您必须正确选择分类器。你必须知道ldpi、mdpi、hdpi、xhdpi和xxhdpi代表设备屏幕中的像素密度。在这种情况下,您要公开,您可能想尝试“最小宽度”分类器。例如,如果您有 2 个屏幕,都是 mdpi,但其中一个是 240 dips 宽度,另一个是 320 dips,您应该将尺寸放在文件夹“values-sw240dp”和“values-sw320dp”下。

希望能帮助到你。

于 2013-12-11T22:03:56.850 回答
0

除非在特殊情况下,否则您实际上不需要为不同的屏幕尺寸使用不同的尺寸。相反,请使用 layout.xml 中的属性来定义布局中的元素应如何缩放。例如, android:layout_width = "match_parent" 将始终将该元素的宽度与父元素的宽度匹配,无论屏幕大小如何。查看有关 xml 布局的链接以开始使用。

于 2013-12-11T21:46:24.247 回答