Android개발(3) : 레이아웃 배치 관련

오랫만에 글을 시작하기 전에 구차한 변명을 조금 하고 시작하겠습니다. 그 동안 기말고사에 공모전 마무리 등 여러 일로 인해 바빠서 포스팅을 못했습니다. 앞으론 꾸준히 하도록 하겠습니다.(꾸벅)


저번 포스팅에 안드로이드에서 쓰이는 레이아웃과 뷰들에 대해 언급을 하였습니다. 이번 포스팅에는 그런 레이아웃과 뷰들을 액티비티 안에 원하는 위치에 배치하는 방법에 대해 배워보도록 하겠습니다.


1. margin / padding

margin과 padding 둘 다 뷰에 여백을 줄 때 사용합니다. 하지만 margin과 padding은 서로 다른 점이 있습니다. margin의 경우 레이아웃과 뷰 사이의 여백을 나타내고, padding의 경우 뷰와 뷰 안의 글자 등과의 여백을 나타냅니다. 좀 더 쉽게 설명하자면 margin은 뷰 밖으로의 여백, padding은 뷰 안으로의 여백으로 생각하시면 됩니다. 아래 그림을 보면 이해가 되실 거에요.

2. layout_gravity / gravity

둘 다 레이아웃이나 뷰의 위치를 지정할 때 사용합니다. layout_gravity의 경우 뷰가 부모뷰에 전부 채워지지 않아 남는 공간에 위치를 지정할 때 사용 하고, gravity는 화면에 표시되는 뷰의 내용에 대한 위치를 지정합니다. 개인적으로 layout_gravity는 부모뷰 안에 들어 있는 뷰들의 위치를 지정할 때 사용하고 gravity는 부모뷰의 위치를 지정할 때 많이 사용했습니다.

3. layout_weight

앱을 개발하게 되면 한 디바이스에서만 앱을 실행시키는 것이 아니므로 뷰들이 여러 디바이스에서 같은 크기로 보여야 합니다. 이 때 사용하는 것이 layout_weight입니다. layout_weight는 공간 가중치로 Linear layout에 사용됩니다. 이 때 비율이 유지되어야 하는 방향으로 layout_height나 layout_width를 0dp로 선언해줍니다.

4. dp(Density-Independent Pixel)

밀도독립화소라고 불리는 dp(dip)는 해상도가 다양한 안드로이드 디바이스를 지원하기 위해 사용된 단위입니다. 해상도의 고저에 영향을 받지 않고 같은 크기로 디바이스에 보이게 됩니다. px에서 dp로 변환하는 식은 아래와 같습니다.

저 식을 외우거나 항상 사용할 필요는 없습니다. px을 dp로 변환해주는 사이트가 있습니다.(http://goo.gl/ftL4J)

5. dpi(Dots Per Inch)

물리적 공간에 얼마나 많은 픽셀이 들어 있는지를 뜻합니다.

ldpi : Low density (120dpi)
mdpi : Medium density (160dpi)
hdpi : High density (240dpi)
xdpi : Extra High density (320dpi)
xxhdpi : 360 dp x 640 dp

6. 마무리

이제 안드로이드 프로그래밍을 위한 UI적 기본 배경은 쌓았다고 보시면 될 듯합니다. 저번 포스팅과 이번 포스팅은 개발자 뿐만 아니라 디자이너 또한 알아두면 좋은 부분이므로 확실히 알아두심 좋을 것 같습니다.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.