代码之家  ›  专栏  ›  技术社区  ›  Randy Sugianto 'Yuku'

如何使Android中的ImageButton根据屏幕密度自动缩放?

  •  3
  • Randy Sugianto 'Yuku'  · 技术社区  · 15 年前

    我有一个图像放在 ImageButton 在MDPI上看起来不错( 中等DPI 屏幕。但是,当设备具有HDPI时( 高DPI )屏幕上,图像仍逐像素精确,在设备屏幕上看起来很小。

    我如何使图像(因此 图片按钮 )基于密度无关像素缩放( DP )而不是像素?

    4 回复  |  直到 10 年前
        1
  •  4
  •   Roman Nurik    15 年前

    如庞金所说,9块是你最好的选择。与资源目录限定符组合( drawable-hdpi , drawable-mdpi 等等),你可以使资产在任何密度和大小上看起来都很好。

    9个补丁和资源目录限定符的示例可以在 Multiple Resolutions Android SDK示例。半透明、黑色、圆角背景作为一个9补丁实现,具有不同的用于ldpi、mdpi和hdpi的PNG。

        2
  •  8
  •   Luke Hardik Soni    13 年前
    android:scaleType="fitXY"
    

    其他选择包括:

    fitStart
    fitCenter
    fitEnd
    center
    cenerCrop
    centerInside
    matrix
    

    请注意,我很懒惰,在原始文件夹中使用非常大的PNG图像。

        3
  •  4
  •   ponkin    15 年前

    imho你应该看起来很接近 NinePatchDrawable . 实际上,有一个 tool 这将帮助您根据容器的大小调整图标(图片/图标/任何…)的大小。它真的很简单,很适合我的需要。另请看 this article (第“ninepatchdrawable”部分),解释了ninepatchdrawable机制。

    一个不可分割的图形是一个可伸缩的位图图像,它 Android将自动调整到 适应视图的内容 你把它作为 背景。a的示例用法 Ninepatch是 标准Android按钮 必须拉伸以容纳 各种长度。一个九件套的抽屉 是包括 额外的1像素宽的边框。它必须 以扩展名.9.png保存, 并保存到可提取/可提取文件中/ 项目目录。

        4
  •  3
  •   Fedor    15 年前

    也许你应该用与设备无关的像素来指定按钮大小?

    android:layout_width="300dip" 
    android:layout_height="50dip"