java - 为什么我们需要 9-patch?

标签 java android nine-patch

我的问题如标题所说:为什么我们需要 9-patch 图像?它们真的那么重要吗?其实,他们到底在做什么?我不清楚 9-patch 图像的概念。

我知道 9 补丁图像是可缩放的。假设我有一些非常适合我的 ldpi 设备的图像按钮。使用 Draw 9-patch 工具(android SDK 的一部分),我可以标记可缩放区域,并且此图像将很好地适合 hdpi 甚至 xhdpi 设备。边缘会很光滑。

但这真的是很好的做法还是只是一种选择? 我应该为 ldpi、mdpi、hdpi 和 xhdpi 设备创建每个图像,还是我可以只在一个图像上使用 Android SDK“绘制 9 补丁”并让 Android 处理各种设备?

我不是那么关心边缘,而是图片的实际内容。内容也可以扩展吗?

最佳答案

内容是可缩放的,在典型用法中,边缘不会被缩放。

它们通常用于按钮背景或其他屏幕装饰,其中缩放的内容可以无限缩放而不会失去分辨率

理想情况下,它们另外在适当的情况下用于依赖于密度的资源,这样资源的部分(您没有明确声明是可扩展的)就不会被放大,随后像素化。

考虑一下 Android 上 Kindle 应用程序的启动画面,其中有一个男孩靠在树上读书的剪影。在简化版本中,地面可以无限​​地水平缩放,但如果男孩被缩放,他就会出现倾斜。因此,您可以使用九面片并指定可以缩放的部分以及缩放方向。

但这还不够 - 如果您只包含低分辨率资源,如果设备显示密度更高,资源最初仍会按比例放大。在这种情况下,男孩看起来可能会因放大而变得模糊,这是一个更高分辨率的资源可以帮助防止像素化的例子。

你表达问题的方式(对我来说)表明你在问 9 补丁图像是否可以替换所有可绘制资源,例如图标或带有图片的资源,答案是否定的。它们仅用于缩放具有单一颜色 block 的资源部分(即不能像素化的部分)。

--

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

关于java - 为什么我们需要 9-patch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16521594/

相关文章:

java - 旧版 Spring 应用程序 - 切入点值意味着什么?

android - 如何访问 android xml 布局文件中包含的 View 内的元素?

Android Billing 4.0.0 - 无购买结果 querySkuDetailsAsync()

android-layout - 使用 9-patch 图像进行应用程序开发

java - 如何在 Java 中测量耗时?

java - 为什么这个字符串到数组不起作用?

java - 除了手动之外,还有什么方法可以在 Eclipse IDE 中进行 servlet 映射吗?

android - scrollVIew.fullScroll(Horizo​​ntalScrollView.FOCUS_RIGHT) 不滚动到结束

设备无法识别 Android 九补丁

android - Android WebView 中的 9 补丁图像