问题标签 [nine-patch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2335 浏览

android - android 可以使用九个补丁图像代替 hdpi,mdpi,ldpi

九个补丁图像呢?
可以使用它们来代替 吗?

  • /res/drawable-hdpi/icon.png ..... 72×72

  • /res/drawable-mdpi/icon.png .... 48×48

  • /res/drawable-ldpi/icon.png …… 36×36

有什么好处/缺点?

0 投票
3 回答
6573 浏览

android - 我们可以使用 Photoshop/GIMP 在九块 (9.png) 图像中创建黑线吗?

当我必须从完整图像(背景图像)创建九个补丁时,Android SDK 工具 draw9patch 太慢了,因为它不允许从上到下快速绘制黑线(就像我们在 Photoshop 或 Gimp 中使用的那样),但我必须绘制每个像素。所以浪费时间。我想你知道我在说什么。

那么,有没有人尝试在 Photoshop/GIMP 中绘制黑线,注意不要填充末端像素?Android SDK 会将它们视为常规的 9 个 PNG 图像吗?

0 投票
0 回答
1136 浏览

android - Android需要九个补丁工具来水平拉伸图像

有人可以向我解释如何将 PNG 图像准备为 Android 的九个补丁吗?我不相信 Android 链接(http://developer.android.com/guide/developing/tools/draw9patch.html)足够有用。这是我要水平拉伸的图像:

在此处输入图像描述

当我将图像添加到九补丁工具时,我真的没有选择绘制任何黑线。然后我在图像周围添加了空白像素,并添加了黑线,从而生成了以下九个补丁:

在此处输入图像描述

如果有人可以向我解释,或者向我展示如何准备我的 PNG 以水平拉伸,我将非常感激......

0 投票
2 回答
2200 浏览

android - Android 不允许我编译 NinePatch 文件 - file.9.png

9个补丁文件的扩展名是什么?xxxxx.9.png?这就是这里解释的内容:http: //developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

"它必须以扩展名.9.png 保存,并保存到您项目的res/drawable/ 目录中。"

但是当我试图编译项目时,我得到了错误——因为文件名!我不能在文件名中保留 2 个点..

那么我该如何解决呢?

0 投票
1 回答
1063 浏览

android - 如何从“磁盘”读取 NinePatch 图像并转换为 NinePatchDrawable?

我想从 SD 或资产中读取几个 NinePatch 图像,因此没有编译,并且没有我可以找到的构造函数/工厂来完成这项工作。我也尝试过 NinePatch 工具源,但它使用图像的内部来完成这项工作并且不使用 Android 类......

肯尼。

0 投票
2 回答
1424 浏览

android - 奇怪的 9-patch 行为

我遇到了一个 9 补丁按钮背景的问题,我不知道我做错了什么。

这是按钮的 xml 配置:

在这个配置中,我使用了一个选择器,以便在按下按钮时背景会有所不同(相同的 9-patch,只有灰度)。我也试过直接使用九补丁,没有选择器,它似乎没有任何区别。

这是 9 补丁图像: 九补丁

这是结果: 在此处输入图像描述

如您所见,填充和拉伸区域似乎完全被忽略了。我的印象是它使用 9-patch 图像作为普通 png,但我不知道为什么。任何帮助将不胜感激,因为这开始让我感到不安:p

提前致谢。

编辑

好的,这就是我使用按钮的完整布局。

就代码而言,我无法向您展示什么。我所做的只是为按钮添加一个非常简单的监听器:

0 投票
4 回答
1742 浏览

android - Android:制作/显示 9patch 图像时的对齐错误

九补丁:

垃圾桶图标 NinePatch 图像

截屏:

NinePatch 错位截图

布局 XML:

期望的结果:

“edit_tray”代表一个可切换的 UI 元素。当编辑模式关闭时,“edit_tray”(因此垃圾桶图标)“消失”。当编辑模式打开时,“edit_tray”可见并覆盖在 ScrollView 内容上。

垃圾桶图标有两个元素:图标本身和它背后的线性渐变。NinePatch 图像包含三个可拉伸区域和一个静态区域以容纳这些元素。图形中间的垃圾桶图标是静态的,应该直接出现在水平中心和屏幕底部。渐变应该从屏幕底部从一侧延伸到另一侧。

错误?

NinePatch 图像在水平方向图像的任一侧仅包含一个像素的可拉伸区域。其效果应该是垃圾桶图标直接出现在中心(左侧1像素==右侧1像素)。但是,正如您在上面的屏幕截图中看到的那样,情况并非如此。注意:此屏幕截图取自我的测试手机 T-Mobile G2。在模拟器中可以看到相同的效果。但是,在 draw9patch 预览和 eclipse 图形布局视图中,图像是完美分布的。

我尝试了几种不同的方法来尝试找出错误所在并尝试修复它或解决它。包括:使用 ImageViews 代替 Views(效果相同),使用 android:scaleType="fitXY"(相同问题),在运行时检查屏幕的宽度和“edit_tray”的宽度是否相同(它们是),使用两个不同的图像作为渐变(作为edit_tray背景)和图标(作为ImageView src)(创建另一个问题,两个图像没有相互重叠。通过在两者上设置绝对高度来修复)等。

答案、解决方法和真正的问题

我使用一些简单的 NinePatch 图像进行了一些测试,每边最多六个可拉伸区域。我注意到在至少一个测试用例(电话、模拟器、draw9patch、eclipse 中的图形布局)中显示它们存在一些问题。

我决定尝试水平扩展图像,以便在垃圾桶图标的边缘显示更多的线性渐变。我制作了 128x64 的图像(以前是 64x64)。我制作了更多可拉伸部分的边缘部分,以试图遏制图像上发生的任何糟糕的数学(?)。Draw9patch 报告了坏的部分,所以我把它放回只有两个像素,两边各一个。有效!图标现在直接位于屏幕中央!我不知道为什么,但没有改变图像的实际可拉伸部分,只将图像的宽度更改为 128,它现在可以工作了。

我尝试将图像的大小调整回大约 100px 宽以删除一些冗余像素,然后错误又回来了!它不仅回来了,而且图标被放置在与屏幕中心偏移的完全相同的位置。我不明白为什么会这样。

有人有想法么?这是一个错误吗?

考虑到我上面描述的解决方法,我目前有这个工作,但如果有人有任何建议,我正在听。

0 投票
3 回答
8979 浏览

android - 位图到 NinePatch 到新的缩放位图

我的问题是这样的:

我需要创建一个使用 NinePatch 创建的重新缩放的位图。

我当前的系统从 NinePatch 文件创建位图。然后将其输入到 NinePatch(或 NinePatchDrawable)中。然后我需要调整它的大小并输出到另一个位图。

我已经审查了这一点,它有很大帮助。

这是我当前的代码:

0 投票
2 回答
19111 浏览

android - 如果我应用背景,如何在 EditText 上返回默认样式?

我刚刚遇到一个我不知道如何解决的问题。它看起来很傻,但我找不到修复它的方法。

我在 android 中有一个带有多个 EditText 的表单,当您提交表单时,它会检查那些 EditText,如果它们有错误的数据,我将 EditText 更改为红色边框(应用九补丁图像)。

问题是,当用户更改EditText时,我想恢复android的默认样式,但我不知道该怎么做。如果我做:

它只会删除所有内容,这不是我想要的。

谢谢!

0 投票
2 回答
4685 浏览

android - 如何在 Android 中将 png-image 用作 9-patch-png?

我们想在选择器中使用 png-images 作为背景:

其中 inputfield_text_bg_active 和 inputfield_text_bg 是我们的 png-images

还有拉伸的问题,看起来不太好。

有没有办法在不将它们转换为 9-patch-png 的情况下使用这些 png?