了解android尺寸

时间:2013-02-18 12:47:50

标签: android dimensions dpi

我有两个设备Desire HD(217dpi,4,3“)和Nexus 7(216dpi,7”)。我实际上正在构建菜单,并对尺寸感到疯狂。我一般使用dp(密度无关像素)。

我们的设计人员希望选项比默认值大一些,所以我在android:minHeight="100dp"项的基础上添加了ListView。但它在平板电脑和手机上看起来非常不同。这是一个屏幕截图,我将平板电脑屏幕截图重新调整为62%,因此两个截图都是相同的高度。

two screenshots

然而两个选项都是100dp高度但是你可以看到桌子上的间隙非常不同,它们大约是0.5 / 1 / 0.5,看起来很不错但是在移动设备上这是1/1/1看起来很糟糕。我不明白为什么会这样。

我还有一个计数器,因为你可以看到黄色框中的两个都是100%缩放,平板电脑制作一个带圆角的矩形,而在移动设备上它更像是一个圆圈。两者都使用相同的形状xml:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke android:width="2dp"
            android:color="#fff" />
    <solid android:color="#f00" />
    <padding android:left="4dp"
             android:top="2dp"
             android:right="4dp"
             android:bottom="2dp" /> 
    <corners
        android:bottomRightRadius="10dp"
        android:bottomLeftRadius="10dp" 
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp" /> 
</shape>

为什么那些图像看起来如此不同?我试着比较几乎相同的dpi值。我认为这两种设备都具有密度hdpi。所以我不能使用基于dpi的单独的值文件,我可以使用大的前缀,但我不确定这将在更大的平板电脑上看起来如何。

3 个答案:

答案 0 :(得分:1)

这是因为两个设备具有相同的DPI但不同的像素和屏幕尺寸(英寸)。 对于Android,两者都是HDPI(因为216-217dpi)。您可以通过以下方式解决此问题:

  1. 使用7“。
  2. 为nexus 7或平板电脑创建专用布局
  3. 为nexus 7创建一个专用样式,类似于值-sw600dp / styles.xml
  4. 调整布局以添加更大的尺寸。
  5. 我认为“Google解决方案”将为平板电脑创建不同的布局,因为您有更多的空间和屏幕。查看Gmail或Google Play应用。

    基本上,如果您的应用需要在平板电脑上运行良好,则必须为布局和值添加两个新文件夹:

    1. layout-sw600dp ---&gt; nexus 7或7“平板电脑
    2. layout-sw720dp ---&gt; nexus 10或10“片剂
    3. 希望这有帮助!!

答案 1 :(得分:0)

使用此

在代码中手动设置列表视图的高度
  int height= getResources().getDisplayMetrics().density * 100;

答案 2 :(得分:0)

我找到了这种行为的原因。它是该设备上的字体大小设置。它被设置为 Huge 所以所有单位 SP 的数据都被多重显示1.5。您可以使用设置 - &gt;在设置中检查设备。显示 - &gt;字体大小。

正如我在this answer中写的那样,您可以通过这一简单的代码行获得比例因子:

float scale = getResources().getConfiguration().fontScale;

我的解决方案是使用该比例因子将 SP DP 混淆。