먼저 res> drawable 안에 xml을 하나 만들어 shape를 추가한다.
본인은 roundbtn.xml이라고 만들었다.
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#ff0000" /> <corners android:bottomRightRadius="20dp" android:bottomLeftRadius="20dp" android:topRightRadius="20dp" android:topLeftRadius="20dp"/> </shape>
라운드가 각 4방향에 20dp로 라운드되게 만든 shape다.
이제 버튼에 background 에 roundbtn.xml을 추가하자.
<Button android:id="@+id/signaldocentcolor" android:layout_width="20dp" android:layout_height="20dp" android:background="@drawable/roundbtn" />
이렇게 만들어두기만 하면 괜찮은데 간혹 상황에 따라 동그랗게 만든 버튼의 색이 변경되어야 할 때가 있다.
그런데 바로 버튼에 버튼.setBackgroundColor(0xff99cc00); 이런식으로 배경색을 바꾸면 drawable/roundbtn 넣었던 것이 빠져버려서 네모낳게 돌아가고 배경색만 바뀌게 된다.
Drawable roundDrawable = getResources().getDrawable(R.drawable.roundbtn); roundDrawable.setColorFilter(0xff99cc00, PorterDuff.Mode.SRC_ATOP); if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) { 버튼.setBackgroundDrawable(roundDrawable); } else { 버튼.setBackground(roundDrawable); }
이렇게 설정하면 os에 버전에 맞춰 필터가 적용되어 컬러가 바뀌게 된다. 위 예제는 #ff99cc 컬러로 변경한 코드이다.