Android:我的按钮图片在应用中放大了吗?

时间:2012-07-09 15:52:58

标签: android image button

我使用一个带有图像作为背景的按钮,这个图像的大小为30x29,但它的大小和放大了x2(我认为)。这是我的按钮的XML代码:

<Button
        android:id="@+id/buttonBack"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="12dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/bouton_back"
        android:maxHeight="30dp"
        android:maxWidth="30dp" />

在Java中:

backButton = (Button) findViewById(R.id.buttonBack);

这有什么问题?我对其他按钮做同样的事情,没有问题......谢谢。

3 个答案:

答案 0 :(得分:1)

我认为这可能是文件夹问题。你把图像文件放在哪里? (如果你在drawable-hdpi

中有这个问题,可能会有问题

修改

ps - 还有一个dp单位的东西,它与像素无关。

答案 1 :(得分:1)

你正在使用背景属性,android将根据dpi中的设备重新分配来拉伸你的图像( ldpi mdpi hdpi xhdpi 屏幕),如果您将图像放在drawable-mdpi文件夹中,您的图像将根据此系数拉伸

enter image description here

答案 2 :(得分:1)

您是否使用多个密度在资源中提供bouton_back?使用dp单位来调整按钮大小是不够的;您还必须provide multiple sizes您的图片:

  • ldpi:120dpi
  • mdpi:160dpi
  • hdpi:240dpi
  • xhdpi:320dpi

转换公式如下:

px = dp * (dpi / 160)

px是最终图像尺寸(以像素为单位),dp是与密度无关的单位所需的尺寸,dpi是目标密度。

使用mdpi图像的像素大小作为基线,简化此公式:

ldpi = mdpi * 0.75
hdpi = mdpi * 1.5
xhdpi = mdpi * 2.0

回到示例代码,如果你想要一个30dp×30dp的按钮,你应该为每个密度提供图像:

  • ldpi:23px x 23px
  • mdpi:30px x 30px
  • hdpi:45px x 45px
  • xhdpi:60px x 60px