このようなカスタムシェイプを描きたいです。
1つのオプションは、photoshopで各形状を個別に作成し、それをコーディングで使用することですが、これをxmlを使用して描画できることを知りたいですか?
このような形にするにはどうすればいいですか?完全なコードを期待するのではなく、私にアイデアを与えるか、正しい方向に向けてください。
次の形状ドローアブルxmlを試してください。
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<!-- Colored rectangle-->
<item>
<shape Android:shape="rectangle">
<size
Android:width="100dp"
Android:height="40dp" />
<solid Android:color="#FAD55C" />
</shape>
</item>
<!-- This rectangle for the left side -->
<!-- Its color should be the same as layout's -->
<item
Android:right="90dp"
Android:left="-30dp">
<rotate
Android:fromDegrees="45">
<shape Android:shape="rectangle">
<solid Android:color="#ffffff" />
</shape>
</rotate>
</item>
<!-- These rectangles for the right side -->
<!-- Their color should be the same as layout's -->
<item
Android:top="-40dp"
Android:bottom="63dp"
Android:right="-25dp">
<rotate
Android:fromDegrees="45">
<shape Android:shape="rectangle">
<solid Android:color="#ffffff" />
</shape>
</rotate>
</item>
<item
Android:top="63dp"
Android:bottom="-40dp"
Android:right="-25dp">
<rotate
Android:fromDegrees="-45">
<shape Android:shape="rectangle">
<solid Android:color="#ffffff" />
</shape>
</rotate>
</item>
</layer-list>
それは白い背景のように見えます:
Shape Drawables の詳細はこちらです。
編集:
以下は、その方法の簡単な説明です。
size
タグのtop, bottom, right and left
属性を設定すると、形状のコンテナの境界線top, bottom, right and left
コンテナ(黄色の長方形)。たとえば、黄色の長方形の内側に小さな長方形を配置したい場合、各黄色の長方形のエッジから10dp
ギャップを空けて、新しい[top, bottom, right and left
]属性を10dp
に設定します。 (内側)長方形。
size
タグ属性の値が負になる場合があることに注意してください。これは、形状の対応するエッジがコンテナの外側に表示されることを意味します。前の例では、left
属性を100 dp以上に設定すると、内側の四角形は表示されません。黄色い人の右の境界線の後ろにいます。回転に関しては、正の値の場合は時計回り、それ以外の場合は反時計回りになります。
うまくいけば、これはあなたを混乱させませんでした。