相同的DPI但不同的英寸尺寸

时间:2015-11-08 06:14:31

标签: android android-layout resolution dpi mdpi

我知道互联网对DPI px英寸等问题感到不知所措。 但经过几个小时的谷歌搜索,我的情况似乎没有发生在其他任何人身上!

我有两个设备自定义构建与android工作室,都是mdpi。 但是一个设备是3.65英寸而另一个设备是10.1英寸。

我创建了一个文件夹,其中2张图像为250x125,dpi设置为160 dpi

通常情况下,我会用dp单位而不是像素在我的XML中声明我的2张图片......我想在两个屏幕上的结果应该是相同的吗?

看起来图像保持相同的尺寸并且看不到@设备的数量

所以要明确: 我需要在我的资源或代码中更改哪些内容,以便我的布局在不同英制尺寸下的尺寸相同?

这是我的mdpi 10.1平板电脑的GOOD布局: enter image description here

这是我的mdpi 3.65设备的BAD布局 enter image description here

如何制作它,即使在3.65英寸的屏幕上,按钮也会缩放到与10.1相同的比例。不是英寸......不是像素......比例......

这是我的XML文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:gravity="center">

    <Button
        android:id="@+id/buttonEnglish"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/english"
        android:layout_marginBottom="5sp"
        android:layout_marginLeft="5sp"
        android:layout_marginRight="2sp"
        android:layout_marginTop="0sp" />
    <Button
        android:id="@+id/buttonNederlands"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/nederlands"
        android:layout_marginBottom="5sp"
        android:layout_marginLeft="20sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"
        />
</LinearLayout>

我绝望了...... Thanx提前

3 个答案:

答案 0 :(得分:3)

无需设计两个xml布局。

您可以根据设备使用Dimension作为边距和填充。

您正在为保证金提供静态值。

在每个设备的值文件夹中使用dimen.xml。

您的layout.xml中的以下代码将适合您。

valeur = xpathApply(rootNode, "//prix", xmlGetAttr, "valeur")
valeur <- data.frame(matrix(unlist(valeur), byrow=T),stringsAsFactors=FALSE)

dimen.xml的值文件夹名称:

值-MDPI
值,华电国际
价值观xhdpi
价值观xxhdpi
值-sw600dp

在每个值文件夹中创建dimen.xml。

并且在dimen.xml中你必须在所有值文件夹中定义margin的值,但该属性的值根据设备大小而不同,如下所示:

值-MDPI

android:layout_marginLeft="@dimen/margin_button"

值-HDPI

<dimen name="margin_button">20dp</dimen>

在所有值文件夹中都是明智的。

答案 1 :(得分:3)

这可能有助于解释您所面临的问题......

你的图像是250x125 - 宽250像素,高125像素。

您指定了160 dpi - 这意味着1英寸= 160像素。

因此,两个屏幕都按照您的要求进行操作,并在1.5625英寸处显示250像素。在大屏幕上,它看起来“按比例”正确。在3.65英寸的屏幕上,按钮占据屏幕的一半以上 - 就像你要求它一样。

如果您希望较小的屏幕看起来像较大的屏幕,那么您有三个选项:

  1. 调整图像大小并提供2个图像资源(或更多用于更多种类的屏幕)。这就是为什么你可以拥有mdpi,hdpi,xhdpi等资源文件夹的原因。你可以调整图像中的像素以适应屏幕尺寸。

  2. 您使用“加权”LinearLayout根据可用的屏幕空间调整所提供空间的大小。对于这种类型的布局,您不必担心性能。

  3. 根据屏幕尺寸对图像进行运行时缩放 - 使用DisplayMetrics获取屏幕的大小和密度,并调整图像以适合屏幕。

  4. 最后一个选项在很多方面都是最灵活的,因为如果您最终得到的屏幕非常大或非常小,您可以进行调整以执行操作,例如将按钮或文本移动到屏幕上的其他位置(高于或低于其他内容)。但是对于你的具体问题,任何一个都足够了。

答案 2 :(得分:0)

Thanx大家的答案。由于来自@Iacs的回答,我发现我必须对我的文件夹结构进行更改。

我完全忽略了这样一个事实:在/ res文件夹中可以有更多目录,然后只有标准&#34;布局&#34;目录。您可以使用以下名称创建其他目录:layout-large,layout-xlarge,layout-small等等... 在这些文件夹中,您可以粘贴layout.xml并调整值...

这就是我的android工作室现在的样子 注意布局文件夹结构: enter image description here

现在我的2台具有相同DPI但屏幕大小不同的设备按照我希望它们显示的方式显示我的按钮!