描いてみたはい、結局いつものネタに走りました。drawable.xmlになってもわかめねこのプリチーさは変わりませんね。解説のようなものめんどくさい満足したので、これで終わりにしてもいいんですが、一応解説。viewを内包せず、全部1つのdrawable.xmlの中でshapeで済ませるにあたって、ミソになったのが以下layer-listのitemの子要素として直接shapeを書ける最も外側のitemを基準にしたpaddingによる相対的なサイズ・位置の指定itemとshapeの間にrotate要素を入れて回転を設定ovalのshapeはstrokeのdashGap,dashWidthを調整すれば円弧が描けるlayer-listのitemの子要素として直接shapeを書けるitem要素のandroid:drawable属性で別ファイルのdrawableを指定しなくても、子要素としてshapeを記述できます。外側のitem要素を基準にしたpaddingによる相対的なサイズ・位置の指定item要素のandroid:top,bottom,left,rightの各属性は、各辺ごとに一番外側の部分からの距離(padding)を指定します。そこで、適当なsize指定をしたitem要素を外枠として、その内側に収まるように他のitem要素のpaddingを記述して位置や大きさを指定しました。各itemのpaddingを、外枠にしたitem要素のsizeより大きくなるようにしてしまったり、item要素の大きさが負になるようなpadding指定をしてしまうと、全部のitemが思っきり崩れます。これは、ソースからドロイド君の胴体部分と外枠部分の記述だけを抜き出したものです。いう具合にrotate要素を挟み、その属性で回転角度・回転軸(pivot)を指定します。4つの簡単な図形しか描けませんが、無理やり円弧を描くこともできます。stroke要素のdashGap属性,dashWidth属性の記述によって、ある程度は円の切れ方を指定できるので、それを利用します。これは、わかめねこの鼻の部分のソースです。2つの円弧をずらして配置し「ω」という形にしています。これらの手段を組み合わせれば、わかめねこの様なイラストもdrawable.xmlで描けてしまう、という訳です。Gingerbread以前では?ちなみに、これらのコードはICS以降向けです。Gingerbread以前のバージョンでも動きますが、rotate指定の回転の基準点が全く違う箇所になる様で、rotateを使っているshapeがずれてしまいます。Honeycombで試してない(てへぺろ上記はレイアウトエディタのスクリーンショットですが実機でも同じ様な表示となります。左アンテナは上にずれ、右アンテナは下にずれて胴体の下に隠れてしまっています(マウスカーソルのある辺りにあります)。確認してはいないんですが、どうやら以下のような違いがあるのでは、と考えています。ICS以降paddingの内側の描画されている範囲の左上が回転軸の基点Gingerbread以前paddingの外側の一番大きい要素の左上が回転軸の基点まとめ勢いだけで、大分役に立たない記事と相成りました。png画像など用意せずにxmlの記述だけでもここまで描けるというのがわかっていただけと思うので、今後アプリを作ったりデザインしたりする方々には是非覚えておいていただきたいです。上手く使えば様々な画面解像度への対応が捗るんではないでしょうか。butterflyのxxhdpiみたいなショックが来るかも知れませんからね。「Androidもうええねん」なんて声も聞こえますが、まだまだAndroidは続きますよ!オレはようやくのぼりはじめたばかりだからな。