룰렛 보드를 하나 만들었습니다. 이미지뷰를 상속하는 커스텀 뷰로요.
public class RouletteBoard extends ImageView {
private static final String TAG = RouletteBoard.class.getSimpleName();
/**
* 그려지는 텍스트 없을경우 default
*/
private static final String DEFAULT_TEXT = "N/A";
private String mText = "";
/**
* 페인트 : 색 등을 지정하는
*/
private Paint mPaint = new Paint();
private Context mContext = null;
public RouletteBoard(Context context) {
super(context);
mContext = context;
}
public RouletteBoard(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
init(attrs);
}
public RouletteBoard(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mContext = context;
init(attrs);
}
private void init(AttributeSet attrs) {
mPaint = new Paint();
mPaint.setColor(Color.BLACK);
mPaint.setTextSize(20);
mPaint.setStyle(Style.FILL);
TypedArray a = mContext.getTheme().obtainStyledAttributes(
attrs,
R.styleable.RouletteBoard,
0, 0);
try {
mText = a.getString(R.styleable.RouletteBoard_text);
mText = (mText == null)? DEFAULT_TEXT : mText; // 체크하기
} finally {
a.recycle();
}
// TODO 색깔 등도 attrs 에 지정 해주면 좋죠.
}
public void setText(String text) {
mText = text;
}
public String getText() {
return mText;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int width = this.getWidth()/2;
int height = this.getHeight()/2;
width -= mPaint.measureText(mText)/2;
canvas.drawText(mText, width, height, mPaint);
}
}
그리고
res/values/attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="RouletteBoard">
<attr name="text" format="reference|string" />
</declare-styleable>
</resources>
그리고 메인 레이아웃 파일입니다.
custom 부분이랑 패키지 부분은 알아서 바꿔주세요~
text 를 xml 에서 넣을 수도 있고
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res/com.example.tester"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.example.tester.RouletteBoard
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
custom:text="HIHIHI" />
</LinearLayout>