Android SDKからDraw9Patchツールを使用しようとしていますが、Draw9Patchで画像を開くとすぐに、すべての画像領域が「不良パッチ」として表示されます。手動で描画しました。ストレッチ可能な領域を定義する線ですが、これが正しく機能するかどうかはわかりません。この特定の画像が「適切なパッチ」ではない理由を誰かが説明できますか?この質問に対する他のStackoverflowの回答は、私の問題と相関していないようです。それらを理解する。
古いですが、私は同じ質問をしました。 「悪いパッチ」は間違いなく混乱を招きますが、ドローアブルの動作を妨げることはありません。開発サイトは、基本的に、これらのパッチサイトが警告であると述べています 「引き伸ばされたときにグラフィックにアーティファクトが生成される可能性があります」 。
たくさんの在庫Androidドローアブルを見ると、「悪いパッチ」が含まれていることがわかります。テストしてみてください。見た目が良ければ、心配する必要はありません。
遅い答えですが、9patchツールは、ストレッチされた領域のピクセルが異なるかどうかを分析しているようです。つまり、誤って行われた場合、1つのストリップがストレッチ可能な領域の他のストリップと異なり、醜いストレッチアーティファクトが生成される可能性があります。
私はそれを視覚化するために小さな(醜い)例を作りました:
最初の画像には、悪いパッチはありません(中央のパッチを除いて、それを無視してください)。
これは、引き伸ばされた領域がすべて同じ色であるため、ピクセルストリップがすべて同じであるためです。
ただし、2番目の画像では、グラデーションがそこから始まり、水平方向のピクセルストリップが残りの部分と同じではなくなったため(青/赤が少し多く含まれている)、上部と下部も不良としてマークされています。意図せずに使用された:
9パッチの画像を作成するための最良かつ最も簡単な答えを見つけました。
From [〜#〜] here [〜#〜] ワンクリックで、XHDPI、HDPI、MDPI、LDPIのすべての解像度の9パッチイメージを作成できます。
ご不明な点がございましたら、お気軽にお問い合わせください。お役に立てば、賛成票を投じてください。
私はあなたの国境が問題である可能性が高いと考えています:
Developer.Android.comから:
「境界線は、画像の伸縮可能領域と静的領域を定義するために使用されます。境界線の左側と上部(他の部分)に1ピクセル幅の黒い線を1つ(または複数)描画して、伸縮可能なセクションを示します。境界線のピクセルは完全に透明または白である必要があります。伸縮可能なセクションはいくつでも持つことができます。相対的なサイズは同じままなので、最大のセクションは常に最大のままです。」
パディングボックスがあるように見えますが、画像とボックスの間にスペースがありません。つまり、Androidは、おそらくそれらをパディングボックスではなく、境界線として解釈します(私は信じています)。
画像の周囲に1ピクセルの黒い境界線を作成してみてください。パディングボックスはオプションですが、いくつかの透明なピクセルで画像から分離する必要があります。
ほとんどの場合、私はあなたが見つけた例にできるだけ近づくようにすることをお勧めします ここ できるだけ。
お役に立てば幸いです。
ボタンに1ピクセルのストレッチ領域を定義してみてください。グラデーション効果がないため、結果は同じになります。不良パッチは通常、左側のストレッチ定義によって生成されます。