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

发布于 2024-08-17 17:20:33 字数 259 浏览 10 评论 0原文

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

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

I have an image put on an ImageButton, which looks good on a mdpi (medium-dpi) screen. However, when the device has a hdpi (high-dpi) screen, the image is still pixel-by-pixel accurate, which look small on the device screen.

How do I make such that the image (and therefore the ImageButton) scaled based on the density-independent pixels (dp or dip) instead of pixels?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

窝囊感情。 2024-08-24 17:20:33
android:scaleType="fitXY"

其他选择包括:

fitStart
fitCenter
fitEnd
center
cenerCrop
centerInside
matrix

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

android:scaleType="fitXY"

Other choices include :

fitStart
fitCenter
fitEnd
center
cenerCrop
centerInside
matrix

Mind you i'm lazy and use really large PNG images in a raw folder.

丢了幸福的猪 2024-08-24 17:20:33

正如 ponkin 提到的,9 块是你最好的选择。与资源目录限定符(drawable-hdpidrawable-mdpi 等)相结合,您可以制作在任何密度和尺寸下都看起来不错的资源。

9 补丁和资源目录限定符的示例可以在 多分辨率< /a> Android SDK 示例。半透明、黑色、圆角背景被实现为具有不同 PNG 的 9 块,适用于 ldpi、mdpi 和 hdpi。

As ponkin mentioned, 9-patches are your best bet. Combined with resource directory qualifiers (drawable-hdpi, drawable-mdpi, etc.) you can make assets that look good at any density and size.

An example of 9-patches and resource directory qualifiers can be found in the Multiple Resolutions Android SDK sample. The semi-transparent, black, rounded-corner background is implemented as a 9-patch with different PNGs for ldpi, mdpi, and hdpi.

画骨成沙 2024-08-24 17:20:33

恕我直言,你应该看起来非常接近 NinePatchDrawable
。实际上,有一个工具可以帮助您制作图标(图片/图标/任何...)根据容器的大小调整大小。它非常简单并且可以很好地满足我的需求。另请参阅这篇文章(“NinePatchDrawable”部分),它解释 NinePatchDrawable 机制。

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

IMHO you should look pretty close to NinePatchDrawable
. There is, actually, a tool that will help you to make your icon(pictures/icons/whatever...) resizable depending on size of container. It`s really simple and works just fine for my needs. Also look at this article(part "NinePatchDrawable"), it explains the NinePatchDrawable mechanism.

A NinePatchDrawable graphic is a stretchable bitmap image, which
Android will automatically resize to
accomodate the contents of the View in
which you have placed it as the
background. An example use of a
NinePatch is the backgrounds used by
standard Android buttons — buttons
must stretch to accommodate strings of
various lengths. A NinePatch drawable
is a standard PNG image that includes
an extra 1-pixel-wide border. It must
be saved with the extension .9.png,
and saved into the res/drawable/
directory of your project.

眼波传意 2024-08-24 17:20:33

也许您应该只指定设备独立像素中的按钮大小?

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

Maybe you should just specify button size in device-independent-pixels?

android:layout_width="300dip" 
android:layout_height="50dip"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文