Shape系の画像を用意する際に一部分だけ角丸を適応させたいってことがあります。

んでXMLだとcornerタグでむにむにできるのですが、
ShapeDrawable で画像作るときはRoundRectShapeを使って作ります。
んでcornerタグにあたる部分が忘れがちになるのでメモる。


/*
outerR に角丸情報を入れる。
値は左から
top-left,top-right,bottom-right,bottom-left
なので上側だけ丸くしたいなら
float[] { 12, 12 , 12, 12, 0, 0, 0, 0};
となる。

↓は左側だけ丸くする。
*/
float[] outerR = new float[] { 12, 12, 0, 0, 0, 0 , 12, 12};

//ShapeDrawable を作るときのRoundRectShapeのouterRadius箇所(第一引数)にさっきのを適応しておく
ShapeDrawable mShapeDrawable = new ShapeDrawable(new RoundRectShape(outerR, null,null));

//これは色です
mShapeDrawable.getPaint().setColor(0x663333FF);

んな感じ。

簡単なもんなのでSCは撮ってません。

コードから作るメリットは汎用的に設定を変えれるので画像数が多い場合はサイズダウンできるかと。
XMLファイルも数が多いと馬鹿にならないくらい容量とるんで・・・

んでば。