27

Android SDK の Draw9Patch ツールを使用しようとしていますが、Draw9Patch で画像を開くとすぐに、すべての画像領域が「Ba​​d Patch」として表示されます。伸縮可能な領域を定義する線を手動で描きましたが、これが適切に機能するかどうかはわかりません. この特定の画像が「良いパッチ」ではない理由を誰か説明できますか? この質問に対する他の Stackoverflow の回答は、私の問題に関連していないようであるか、理解していません。

Draw9Patch の不良パッチの例 元の画像

4

6 に答える 6

27
于 2011-11-25T00:42:58.500 に答える
17

遅い回答ですが、9patchツールは、ストレッチ領域のピクセルが異なるかどうかを分析しているようです.

それを視覚化するために、小さな (醜い) 例を作成しました。
最初の画像では、悪いパッチはありません (中央のものを除いて、無視してください)。
これは、引き伸ばされた領域がすべて同じ色であるためです。ピクセル ストリップはすべて同じです。 悪いパッチは表示されません

ただし、2 番目の画像では、グラデーションがそこから開始され、水平方向のピクセル ストリップが残りの部分と同じではない (青/赤が少し多く含まれている) ため、上部と下部も悪いとマークされています。意図せずに使用: 不正なパッチが作成されました

于 2012-06-09T20:30:59.410 に答える
11

9パッチ画像を作成するための最良かつ最も簡単な答えを見つけました。

HEREから、すべての解像度 (XHDPI、HDPI、MDPI、および LDPI) の 9 パッチ イメージをワンクリックで作成できます。

質問がある場合はお知らせください。役に立った場合は、賛成票を投じてください。

ここに画像の説明を入力

于 2013-05-31T07:11:42.030 に答える
3

悪いパッチに関する中程度の投稿を公開しました。悪いパッチの根底にあるロジックを説明し、それらを克服するためのいくつかのアドバイスが含まれています。お気軽にチェックしてください:

9 パッチ: どこにでも悪いパッチが…</a>

悪いパッチ

于 2016-04-01T12:22:29.233 に答える
2

あなたの国境が問題である可能性が高いと思います:

developer.android.com から:

「境界線は、画像の伸縮可能な領域と静的な領域を定義するために使用されます。境界線の左側と上部に 1 ピクセル幅の黒い線を 1 つ (または複数) 描画して、伸縮可能なセクションを示します (他の境界ピクセルは完全に透明または白である必要があります。必要なだけ伸縮可能なセクションを作成できます。それらの相対的なサイズは同じままであるため、最大のセクションは常に最大のままです。"

パディング ボックスがあるように見えますが、画像とボックスの間にスペースがありません。つまり、Android はおそらくそれらをパディング ボックスとしてではなく、ボーダーとして解釈します (私は信じています)。

画像の周りに 1 ピクセルの黒の境界線を作成してみてください。パディング ボックスはオプションですが、いくつかの透明なピクセルで画像から分離する必要があります。

ほとんどの場合、ここにある例にできるだけ近づけることをお勧めします。

それが役立つことを願っています。

于 2011-09-15T08:26:46.010 に答える
1

ボタンに 1 ピクセルのストレッチ領域を定義してみてください。グラデーション効果がないため、結果は同じになります。悪いパッチは通常、左側のストレッチ定義によって生成されます。

于 2012-03-22T13:49:40.977 に答える