2014년 5월 20일 화요일

[Android] AbsoluteLayout vs RelativeLayout


AbsoluteLayout vs RelativeLayout

  대부분의 화면들은 LinearLayout의 범주에서 벗어나지 않겠지만, 좀 더 유연하고 자유로운 화면의 구현을 위해서는 AbsoluteLayout과 RelativeLayout을 활용할 수 있어야 하겠습니다. 이름만 들어 봐도 Linear보다는 구현이 덜 복잡할 것이 예상됩니다. 오늘은 두가지 모두 다루어 보겠습니다.

  AbsoluteLayout
 말 그대로, 위 아래 양 옆 어디에 어떤 다른 차일드 뷰가 있어도, 상관하지 않고, 부모의 좌측 상단을 0, 0으로 하여 주어진 위치에 차일드를 배치할 수 있도록 한 레이아웃이다. 하지만 한가지 문제점은, 이 레이아웃은, px, dp등 크기가 일정한 단위만이 사용 가능하다. 예를 들어 부모의 가로를 100%으로 하고 20%, 20%에 배치한다거나 하는 일은 불가능하기 때문에, 이것을 이용하여 구현하게 되면 해상도가 다른 폰에 가서는 원하는대로 제대로 표현되기 힘들기 때문에, 특별한 상황이 아니면 사용하지 않는다. 예를 들어 뒷 배경이 정해진 BITMAP파일일 때, 배경에 맞춰서 정해진 위치에 표현할 경우에는 매우 유용하다. bitmap을 부모에 맞춰 늘여서 그리지 않는 한 주어진 위치에 표현될테니 말이다. android:layout_x, android:layout_y라는 두개의 속성만이 존재하는데, 각각이 좌측 상단을 (0,0)으로 한 (x,y)좌표이다. 이 간단한 레이아웃의 예제를 제공하는 것은 지면불리기에 불과하다고 판단되어 패스한다.

  RelativeLayout
 xml등 화면정의파일이 존재하지 않던 시절, 단순 코딩만으로 개발할 때는 좌측 상단부터 오른쪽으로, 위에서 아래로 순서대로 컨트롤들을 배치하면서, A를 그리고, 5px띄어서 B를 그리고, 그렇게 하면서 화면을 구현하곤 했었다. 그런 느낌과 비슷한 레이아웃이 바로 RelativeLayout이다. 차일드들끼리 서로 영향을 주기 때문에, 하나의 길이를 수정하면 전체적으로 같이 조정된다. 이는 잘 설계하면 어떤 레이아웃보다 훌륭할 수 있지만, 너무 복잡한 화면을 하나의 RelativeLayout으로 처리하면, 자칫 너무 복잡해서 하나를 수정하면 다른게 틀어지는 낭패를 볼 수 있으니, 정확히 이해하고 적당히 차일드 레이아웃을 배치하면서 사용하도록 하자.

댓글 없음:

댓글 쓰기