【问题标题】:How to make ImageButton in Android automatically scale based on screen density?如何使Android中的ImageButton根据屏幕密度自动缩放?
【发布时间】:2010-01-12 08:11:44
【问题描述】:

我有一张图片放在ImageButton 上,在 mdpi (medium-dpi) 屏幕上看起来不错。但是,当设备具有 hdpi(high-dpi)屏幕时,图像仍然是逐像素精确的,在设备屏幕上看起来很小。

如何使图像(以及 ImageButton)基于与密度无关的像素(dpdip)而不是像素进行缩放?

【问题讨论】:

    标签: android imagebutton dpi


    【解决方案1】:
    android:scaleType="fitXY"
    

    其他选择包括:

    fitStart
    fitCenter
    fitEnd
    center
    cenerCrop
    centerInside
    matrix
    

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

    【讨论】:

    • 我认为我没有完整阅读这个问题,但这可能会解决某人的问题:D。
    【解决方案2】:

    正如 ponkin 所说,9 补丁是您最好的选择。结合资源目录限定符(drawable-hdpidrawable-mdpi 等),您可以制作在任何密度和大小下看起来都不错的资产。

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

    【讨论】:

      【解决方案3】:

      恕我直言,您应该看起来非常接近 NinePatchDrawable .实际上,有一个tool 可以帮助您根据容器的大小调整图标(图片/图标/任何东西...)的大小。它真的很简单,可以很好地满足我的需求。另请看this article(part "NinePatchDrawable"),它解释了 NinePatchDrawable 机制。

      NinePatchDrawable 图形是可拉伸的位图图像,它 Android 会自动调整大小 将视图的内容容纳在 您已将其放置为 背景。一个使用示例 NinePatch 是使用的背景 标准 Android 按钮 — 按钮 必须伸展以适应字符串 各种长度。 NinePatch 可绘制对象 是一个标准的 PNG 图像,包括 一个额外的 1 像素宽的边框。它必须 以扩展名 .9.png 保存, 并保存到 res/drawable/ 项目目录。

      【讨论】:

        【解决方案4】:

        也许您应该只以与设备无关的像素为单位指定按钮大小?

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

        【讨论】:

        • 有了这个我不能让它根据图像大小自动调整大小(即当我更新图像时,我必须重新设置值)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-24
        • 1970-01-01
        • 2020-02-26
        • 1970-01-01
        • 2016-07-02
        • 1970-01-01
        • 2014-10-21
        相关资源
        最近更新 更多