안드로이드에서 View의 좌우 끝을 반원 형태로 만드는 가장 간단한 방법은 drawable XML 파일을 이용하는 것입니다. 이 글에서는 shape drawable을 정의하고 이를 View의 배경으로 적용하여 반원 모양을 만드는 방법을 소개합니다.
1. 개념 이해
View를 좌우로 반원처럼 만들기 위해서는 View의 높이 절반만큼 모서리 반지름(corner radius)을 설정하면 됩니다. 예를 들어, View의 높이가 100dp라면 좌우 끝이 완전히 둥글어지기 위해서는 50dp의 radius가 필요합니다.
2. Drawable XML 작성
아래와 같이 res/drawable/rounded_view.xml 파일을 생성합니다. 이 파일은 네 모서리에 각각 원하는 반지름을 설정하는 shape drawable입니다.
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FF0000" />
<corners
android:topLeftRadius="50dp"
android:bottomLeftRadius="50dp"
android:topRightRadius="50dp"
android:bottomRightRadius="50dp" />
</shape>
- solid 요소는 배경색을 지정합니다.
- corners 요소는 각 모서리의 반지름을 설정합니다.
- View의 높이와 corners에 설정된 radius가 일치할 때 좌우가 반원 형태가 됩니다.(뷰 높이 100dp, radius 50dp)
3. Layout XML에서 배경 적용
위에서 작성한 drawable 파일을 View에 적용하려면, layout XML 파일에서 android:background 속성으로 지정하면 됩니다.
<View
android:id="@+id/roundedView"
android:layout_width="200dp"
android:layout_height="100dp"
android:background="@drawable/rounded_view" />
이 예시에서는 View의 높이가 100dp이고 각 모서리의 radius가 50dp이므로, 좌우가 완전히 반원 형태가 됩니다.
4. 주의할 점
- drawable XML에 정의한 radius 값은 dp 단위로 설정해야 화면 밀도에 따라 적절하게 적용됩니다.
- View의 높이가 바뀌면 radius 값도 바꿔야 반원 형태를 유지할 수 있습니다.
- 이 방법은 고정된 radius를 사용하는 정적인 방식이므로, 사용자의 화면 설정(예: 화면 배율 변경)이나 View의 크기 변화에 따라 정확한 반원이 되지 않을 수 있습니다.
이 방법은 별도의 코드 없이 XML만으로 간단하게 반원 형태를 구현할 수 있기 때문에, 가장 널리 사용되는 방식입니다. 그러나 radius를 고정된 값으로 설정하기 때문에 화면 배율이나 기기 해상도에 따라 비율이 깨질 수 있는 단점이 있습니다.
다음 글에서는 이러한 한계를 극복하기 위해 코드에서 radius를 동적으로 설정하는 방법을 소개하겠습니다.
함께보면 좋은글
동적으로 프로그래밍을 통해 코드상에서 radius를 설정하여 언제나 뷰의 좌우가 반원을 유지하는 방법에 대한 내용은 아래 포스팅에 작성했습니다.
2025.05.05 - [안드로이드] - 안드로이드 View 좌우 동적으로 반원으로 만들기(GradientDrawable 활용 동적 방법)
안드로이드 View 좌우 동적으로 반원으로 만들기(GradientDrawable 활용 동적 방법)
안드로이드에서 View의 좌우를 반원처럼 만들기 위해 drawable XML에서 고정된 반지름 값을 사용하는 방법은 간단하지만, 화면 크기나 시스템 화면 배율(screen zoom)에 따라 정확한 반원이 되지 않는
best-coding.tistory.com
'안드로이드' 카테고리의 다른 글
안드로이드 View 좌우 동적으로 반원으로 만들기(GradientDrawable 활용 동적 방법) (0) | 2025.05.05 |
---|---|
안드로이드 View에 둥근 모서리(Rounded Corner)와 배경색 적용하는 방법 (XML 예제 포함) (0) | 2025.04.06 |
[안드로이드] 상황별 코틀린 영역 함수(Scope function) 사용법, 예시코드 (0) | 2025.01.24 |
[안드로이드] 현업에서 유용한 코틀린 확장함수(extension function) 예시 총 정리 (0) | 2025.01.15 |
안드로이드 ImageView 리플 효과 문제점 해결법 총 정리 - 이미지 아래에 리플효과가 깔리는 문제, 리플효과가 뷰 외곽까지 번지는 문제 (0) | 2025.01.13 |
댓글