Viewを丸く切り取る

Viewを丸く切り取るには、onDraw()をオーバーライドしてclipPath()してあげたクラスを作ってあげればOK。

こんな感じ。


public class ClipImageView extends ImageView {

private static final String TAG = "ClipImageView";

public ClipImageView(Context context) {
super(context);
}
public ClipImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ClipImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

private Path pathCircle = new Path();

/**
* Viewのサイズ確保
*/
protected void onSizeChanged(int w, int h, int oldw, int oldh){
// 丸いパス
pathCircle.addCircle(w/2, h/2, 24, Path.Direction.CW);
}

/**
* 描画処理
*/
protected void onDraw(Canvas canvas)
{
// パスに沿って切り取り
canvas.clipPath(pathCircle);

super.onDraw(canvas);
}

}


あとは、これをLayoutにぺたっと貼り付け。



android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/icon"
/>




見た目はこんな感じ。

コメント

このブログの人気の投稿

Execノードを使う

SendGridのX-SMTPAPIヘッダの使い方(Section Tags、Substitution Tags編)

Joinノードを使う(その4)